Qtでプログラミング3

  • 2021.02.22
  • Qt

相変わらずちまちまと進めているが、大分パソコン向けのソフトウェアの作り方が分かってきた気がする。

組み込みでは割込みを使って見かけ上の並列処理を実現しているが、少なくともQtにおいては割込みという概念は無く、全てポーリングで動いているようだ。イベントが発生するとキューにスタックされ、ポーリングでそれを検出してイベントに応じた処理を実行するというのが基本的な動作なのだと思う。
イベントが複数あるとその分だけ処理が実行されるが、スレッドが1つしかないとある処理が終わるまで次の処理が始まらない。そこでスレッドを分け、それぞれ独立してポーリングすることで並列処理のように見せかけているようだ。

※上の図はQtの公式サイトのもの

Windowsはリアルタイム処理に向かないとよく聞くが、確かにこの仕組みだと正確な時間間隔で処理を実行したり外部からの入力に即座に反応することは不可能だろう。

仕組みはなんとなく分かってきてもそれを実現するコードの書き方が分からなかったりする。しかし、少し検索してみると組み込み系と比べてなんとドキュメントが充実していることか!そして個人ブログなどの情報量が多いことか!検索ワードが正解から遠く離れてさえいなければ独学でもガンガン勉強していける環境が整っていて非常にありがたい。