한국어
Qt
 

QML and Qt Quick QML과 코루틴(Coroutines)

makersweb 2020.11.03 22:25 조회 수 : 625

function * 선언 (함수 키워드 뒤에 별표)은 Generator 객체를 반환하는 generator 함수를 정의한다. 다음의 피보나치 예제는 generator와 QML을 사용하여 코루틴의 예를 보여준다.

import QtQuick 2.11
import QtQuick.Window 2.11
import QtQuick.Controls 2.2

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Fibonacci")

    property var fibonacci: function* () {
        yield "0: 0"
        yield "1: 1"
        var f0 = 1, f1 = 0, n = 2;
        while (true) {
            var next = f1 + f0;
            f0 = f1;
            f1 = next;
            yield (n++) + ": " + (f0 + f1);
        }
    }

    Row {
        anchors.fill: parent
        Button {
            id: button
            property var coroutine: fibonacci()
            width: parent.width / 2; height: parent.height
            text: coroutine.next().value
            onPressed: text = coroutine.next().value
        }


        Button {
            text: "Reset!"
            width: parent.width / 2; height: parent.height
            onPressed: {
                button.coroutine = fibonacci()
                button.text = button.coroutine.next().value
            }
        }
    }
}

 

코루틴 이란?

코루틴(coroutine)은 루틴의 일종으로서, 협동 루틴이라 할 수 있다(코루틴의 "Co"는 with 또는 togather를 뜻한다). 상호 연계 프로그램을 일컫는다고도 표현가능하다. 루틴과 서브 루틴은 서로 비대칭적인 관계이지만, 코루틴들은 완전히 대칭적인, 즉 서로가 서로를 호출하는 관계이다. 코루틴들에서는 무엇이 무엇의 서브루틴인지를 구분하는 것이 불가능하다. 코루틴 A와 B가 있다고 할 때, A를 프로그래밍 할 때는 B를 A의 서브루틴으로 생각한다. 그러나 B를 프로그래밍할 때는 A가 B의 서브루틴이라고 생각한다. 어떠한 코루틴이 발동될 때 마다 해당 코루틴은 이전에 자신의 실행이 마지막으로 중단되었던 지점 다음의 장소에서 실행을 재개한다. 출처: 위키백과

번호 제목 글쓴이 날짜 조회 수
공지 Qt프로그래밍(QtQuick) Beginner를 위한 글 읽는 순서 운영자 2019.01.05 86884
19 Qt의 스레드간 시그널 슬롯의 커넥션타입 [1] makersweb 2015.10.24 10353
18 Ubuntu Linux에서 Qt Creator 설치 file makersweb 2016.03.06 10739
17 Qt 응용프로그램 배포(windows) file makersweb 2018.10.10 11598
16 Qt Installer Framework - 패키징, 설치프로그램 제작 file makersweb 2018.10.14 11811
15 QtSerialPort를 사용한 시리얼(Serial)통신 [3] makersweb 2019.05.21 12226
14 Qml 기본 컴포넌트 강좌 (1) file makersweb 2019.01.03 12267
13 Qt의 오픈소스 라이센스 소개 file makersweb 2019.12.15 12824
12 Windows에서 라즈베리파이3용 Qt5.10.0 크로스컴파일 [20] file makersweb 2018.02.23 13251
11 QML과 QtQuick 모듈 개념과 기본 타입들 makersweb 2019.04.26 13543
10 Qml과 C++로 구현하는 GUI어플리케이션 file makersweb 2018.12.25 14213
9 Qt 프로그래밍의 시작 makersweb 2015.10.25 14495
8 초보자를 위한 첫번째 프로젝트 - QML로 만드는 Hello World file makersweb 2018.03.16 14664
7 QtCreator Design으로 GUI만들기 (QML로 만드는 Hello World -2) [1] file makersweb 2019.05.26 15176
6 QThread 소개 및 예제 makersweb 2019.12.25 19883
5 Qt의 시그널 슬롯 시스템 file makersweb 2015.10.20 23901
4 Windows에서 Qt 설치 따라하기 file makersweb 2019.10.14 31092
3 QString 문자열 다루기 예제 운영자 2019.01.26 40965
2 콘솔에서 사용자 입력받기 file makersweb 2020.03.22 51917
1 가상키보드(Qt Virtual Keyboard)를 사용하는 방법 [32] file makersweb 2019.05.03 223009