한국어
Qt
 

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

makersweb 2020.11.03 22:25 조회 수 : 490

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 75223
144 QML 코딩 규칙 makersweb 2021.09.05 1764
143 QML 에서 QR코드 생성 file makersweb 2021.08.20 507
142 앱을 종료할 때 QML 바인딩 오류를 피하는 방법 makersweb 2021.08.08 344
141 Qt 응용프로그램에서 Lottie Animation사용 file makersweb 2021.05.30 646
140 싱글 샷(Single-Shot) 시그널/슬롯 연결 makersweb 2021.05.12 485
139 응용프로그램 자동실행 설정 (on Windows) makersweb 2021.05.08 397
138 Qt 6 에서 프로퍼티 바인딩 makersweb 2021.04.03 576
137 QML과 JavaScript 의 숫자 관련 내장된 함수 makersweb 2021.03.28 772
136 Qt 5 코드를 Qt 6로 포팅하기 위해 도움이 되는 Clazy Framework file makersweb 2021.03.01 617
135 C++로 작성한 클래스를 QML에서 생성 file makersweb 2021.02.10 4140
134 Qt MQTT의 pus/sub 튜토리얼 file makersweb 2021.02.06 1029
133 Qt 를 사용하거나 기반으로 하는 응용프로그램 file makersweb 2021.01.30 2160
132 Loader를 사용하여 동적으로 QML 로드 makersweb 2021.01.19 1088
131 QThread 및 QMutex 예제 makersweb 2021.01.12 819
130 그래픽 소프트웨어에서 디자인 내보내기 (Exporting Designs from Graphics Software) j2doll 2020.12.25 335
129 Qt5Compat 라이브러리를 사용하여 Qt5에서 Qt6로 포팅 [2] makersweb 2020.12.05 453
128 Qt Quick Controls 2에 네이티브 데스크탑 스타일 추가 file makersweb 2020.11.23 395
127 QML 바인딩 끊김 진단 makersweb 2020.11.08 627
» QML과 코루틴(Coroutines) makersweb 2020.11.03 490
125 Qt 6의 비동기 API makersweb 2020.10.19 770