2017-08-25 11 views
2

自分のカスタムイベントループがあるC++プロジェクトでuWebSocketsを使用しています。これはwhileループで、実行ごとに可変遅延があります。C++ uWebSocketsはイベントループを1つのスレッドに統合します

while (true) { 
    std::this_thread::sleep_for (variableTime); 
    // Execute logic 
} 

私は以前にロジックを実行するために別のスレッドを使用してきたが、私は私のループでuWebSocketsループを統合する:それは次のようになります。このようなもの:

#include <iostream> 
#include <uWS/uWS.h> 

using namespace std; 

int main() { 
    uWS::Hub h; 

    h.onMessage([](uWS::WebSocket<uWS::SERVER> *ws, char *message, size_t length, uWS::OpCode opCode) { 
     ws->send(message, length, opCode); 
    }); 

    if (h.listen(3000)) { 
     h.run(); 
    } 

    while (true) { 
     std::this_thread::sleep_for (variableTime); 
     h.getMessages(); // <-- doesn't call `onMessage` until this is executed 
     // Execute logic 
    } 
} 

どうすればいいですか?

答えて

1

今日私は同じ質問をしました。ソースコードを掘り下げた後、私は答えを見つけたと思う。

あなたが探しているのは、最近追加された(https://github.com/uNetworking/uWebSockets/pull/762)Node :: Poll(Hub Inherits Node)機能で、プログラムのメインループ内で使用するためにブロックされていないようです。私はあなたが心に持っていたgetMessagesとまったく同じように動作するはずだと思います。

+0

これは私が探していたものです。私は並列スレッドでそれを取り組んできたので、以前はPを追加しておきたいと思っていました。とにかくおかげさまで! –

関連する問題