ZeroMQ: поток останавливается ровно через 2 часа (1) -l oop. Почему и как это решить? - PullRequest
1 голос
/ 26 мая 2020

Он не трескает sh, поэтому нет ядра для анализа. Он просто останавливается.

Я экспериментировал несколько раз. Он останавливается ровно через 2 часа.
OS : qnx6.5.0
1007 * LIBs : ZeroMQ и Protobuf

У меня только один поток, похоже примерно так:

dummyFrontEnd::dummyFrontEnd():context(1),socket(context,ZMQ_PUB) {

}
void dummyFrontEnd::Init()
{
    socket.connect("tcp://127.0.0.1:5555");
    cout << "Connecting .... " << endl;
}
void dummyFrontEnd::SendCANalyserTable(const std::string& filename)
{
    ...

    zmq::message_t create_values( protoTable.ByteSizeLong()
                                + sizeof(uint16_t)
                                  );

    *((uint16_t*)create_values.data()) = TABLEMSG_ID;       // ID

    protoTable.SerializeToArray( create_values.data()
                               + sizeof(uint16_t),
                                 protoTable.ByteSizeLong()
                                 );

    try {
            socket.send(create_values,ZMQ_NOBLOCK);
           }
    catch (int e){
            std::cout << "SPD exception e : "
                      <<  e
                      << std::endl;
           }

    protoTable.clear_columnvalues();
    usleep(1);

    }

}
void main(){
...

...
  while(1) {
    if (arguments.canalyser_filename != "") {
        dmyFntEnd.SendCANalyserTable(arguments.canalyser_filename);

        if (arguments.verbose) {
            cout << "DummyFrontEnd"
                 << "completed sending CANalyser table"
                 <<  endl;
        }
    }
  }
...
...
}
...