• [^] # Re: Hello World concurrentiel

    Posté par . En réponse à la dépêche De tout, de rien, des bookmarks, du bla‐bla #45. Évalué à 4.

    +1 pour la version C++/Mindroid pourrite.
    En C++11 avec zeromq, du coup, on fait exactement la même chose qu'en go, de la concurrence par passage de messages, le sucre syntaxique en moins (mais le sucre ça fait des caries)

    #include <iostream>
    #include <thread>
    #include <zmq.hpp>
    int main() {
     zmq::context_t ctx(1);
     std::thread t1([&] {
     zmq::socket_t sock1(ctx, ZMQ_REQ);
     sock1.connect("tcp://localhost:5555");
     for (int i = 0; i < 1000; ++i) {
     std::cout << "Hello ";
     zmq::message_t request(2);
     memcpy(static_cast<void *>(request.data()), "OK", 2);
     sock1.send(request);
     zmq::message_t reply;
     sock1.recv(&reply);
     }
     zmq::message_t request(2);
     memcpy(static_cast<void *>(request.data()), "KO", 2);
     sock1.send(request);
     });
     std::thread t2([&] {
     zmq::socket_t sock2(ctx, ZMQ_REP);
     sock2.bind("tcp://*:5555");
     while(true) {
     zmq::message_t request;
     sock2.recv(&request);
     std::string msg(static_cast<char*>(request.data()), request.size());
     if (msg == "KO")
     break;
     std::cout << "World\n";
     zmq::message_t reply(2);
     sock2.send(reply);
     }
     });
     t1.join();
     t2.join();
    }