ローカル ネットワークでの分散コンピューティングの PUSH/PULL パターンを試しています。今まではすべてうまくいっているように見えましたが、31 ワーカー (サーバー) の起動時にクライアント (人工呼吸器とコレクター) アプリケーションがクラッシュすることを発見しました。
Windows の特定のポートへの接続に制限はありますか (MacOs X ではそうではないようです)。zeromq の例のように、tcp トランスポートとポート 5555 および 5556 を使用しています。この動作は、リモート ワーカーとローカル ワーカーのオブザーバーです。
どうも
更新: コードはこちら (zmq ガイドから変更されたサンプル)
#include <zmq.hpp>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <iostream>
#include <sstream>
int main (int argc, char *argv[])
{
zmq::context_t context(1);
int number_of_sockets=32; // 32 will crash, 30 will pass
zmq::socket_t** receiver=new zmq::socket_t*[number_of_sockets];
zmq::socket_t** sender=new zmq::socket_t*[number_of_sockets];
std::cout<< "go"<<std::endl;
for (int i=0;i<number_of_sockets; i++)
{
receiver[i]=new zmq::socket_t(context, ZMQ_PULL);
receiver[i]->connect("tcp://localhost:5555");
}
std::cout<< "ok"<<std::endl;
for (int i=0;i<number_of_sockets; i++)
{
sender[i]=new zmq::socket_t(context, ZMQ_PUSH);
sender[i]->connect("tcp://localhost:5556");
}
std::cout << "done" <<std::endl;
return 0;
}
次のコマンドで Mingw-w64-tdm (4.5) を使用してビルドします。
g++ -o worker.exe taskworker.cpp -L/./lib -lzmq -L/./lib/zeromq/libzmq.la -liphlpapi -lrpcrt4 -lws2_32 -lpthread