に基づく3つのスレッドとwhile(true)
ブロッキング関数を使用してアプリケーションモデルを作成しています。
- イベントスレッド-SDL_WaitEventによってブロックされたユーザー入力を待機します
- ソックスレッド-サーバーからのデータを待機し、ソケットをブロックすることでブロックされます。
- スレッドのレンダリング-ブロックされていないバッファからデータをレンダリングします。
スレッドのレンダリングに問題があります。たとえば、ペイントイベント(私が定義し、他の2つのスレッドのいずれかにディスパッチされる)が発生するまでブロックするブロック関数が必要です。
しかし、ブロッキング関数がどのように機能するのかわかりません。もちろん、sleep()
ループを作成することはできますが、そのようなループでは、何も起こらなくてもFPSがリソースを消費するように修正されています(このトピックについては、ここですでに詳しく説明しました)。一方で、データをすぐに表示することはありません。これはGUIアプリケーションには適していません。