コルーチン

コルーチンと QML で遊んでみた

Published Tuesday October 30th, 2018 | Leave a comment
Posted in Qt | Tags:

この記事は The Qt Blog の Playing with coroutines and QML を翻訳したものです。 執筆: Jesús Fernández, 2018年05月29日 (別名 コルーチンと Qt で遊んでみた パート2) 5747a7530206ac410b6bd7c1b8490d7d389ad3a5 により JavaScript Generators のサポートが QML に追加されました。これによって、前回の記事のフィボナッチ数列もジェネレーターで書けるようになりました。 サンプルコード: import QtQuick 2.11 import QtQuick.Window 2.11 import QtQuick.Controls 2.2 Window { property var fibonacci: function* () { yield “0: 0” yield “1: 1” var f0 = 1, […]

Read More

コルーチンと Qt で遊んでみた

Published Saturday September 22nd, 2018 | Leave a comment
Posted in Qt | Tags:

この記事は The Qt Blog の Playing with coroutines and Qt を翻訳したものです。 執筆: Jesús Fernández, 2018年05月29日 みなさん、こんにちは! 最近 C++ でのコルーチンの状況が気になって、いくつかの実装を調べていました。そして これ で実験することにしました。 これはシンプルで簡単に使え、Linux と Windows で動作します。 当面の目標は、シグナルが来るのを待ったり、QCoreApplication::processEvents を呼んだり、QEventLoop をスタック上に作るようなことをせずとも非同期で動くコードを探るということです。 最初のアプローチは、カスタムのイベントディスパッチャーの中の processEvent 関数をコルーチンに変換し、yield を使うことでした。いくつか失敗をして、この方法はやめることにしました。 次の取り組みは、スロットをコルーチンにすることでした。 QTimer::singleShot(0, std::bind(&coroutine::resume, coroutine::create([]() { … }); このラムダ関数の中で、CPU は yield まで処理を実行し、アプリケーションのイベントループに飛びます。 実際のコードはこんな感じです。 #include “coroutine.h” #include <QtCore> #include <QtWidgets> int main(int argc, char **argv) […]

Read More
Get started today with Qt Download now