各オブジェクトが独立して動作するクラスがあります。たとえば、オフサイトの多くのサーバーでデータベースからさまざまなテーブルを取得している可能性があります。しかし、内部的には、いくつかのテーブルがリンクされていることがわかりました。には、の応答を一切必要としないコマンドをグループ化することで、かなりの量のIOを節約できます。私の目標は、次のような表のためのインターフェイスを使用してコードを書くことができるようにすることです:スレッドを使用しないコマンドキューイング
void bar() {
// queue time is 500 milliseconds
Table::queue_time = 500;
Table a("foo"),b("baz"),c("cat");
// Call some function for members of this class
a.add(2);
b.add(5);
// Command is sent to database
sleep(1);
// This command will be sent later
c.add(5);
}
私はこのコードは、実際には、実際にはデータベースに2つのコマンドを送信します。最初にa.add()を呼び出した後、500ms後にデータベースにコマンドを発行するような一種の「キュー」を開始します。 b.add()が呼び出されると、この新しい命令がこのキューに投げられるようにしたいと思います。しかし、スリープが発生して(そして、時間が命令を送るのに十分な時間が経過しているので)、私はc.send()が実際に新しいキューを開始し、500ms以内に再び送信することを望みます。
しかし、私はできるだけスレッドなしでこれをやりたいのです。それは可能なのですか(私はそう思っていないと思います)?もしそうでなければ、C++のどのツールが仕事に適しているのですか?そのスレッドがスリープしている間に読み込まれる前に編集されるオブジェクトとどのように通信できますか?
(実際には、これはデータベースとは何の関係もありませんので、これは彼らのために役に立たないだろうということを心配しないでください)
あなたが定期的に介入するルーチンを書く場合、実際にあなた自身でスレッドシステムを書いています。これはライブラリベンダーの方が良いかもしれませんが、既存のものを使用できる場合はそうではありません。 – xtofl
いいえ、「介入」しません。自分で呼びます。ゲームのようなループ集約型アプリケーションでは、多くの意味があります。同様に、Windowsの共通のタイマー機能は、メッセージループを使用して同じ方法で実装されます。 –