2013-07-14 38 views
5

Mam dwa procesy: a producent który popycha wiadomości poprzez ZMQ Do konsument w prosty PULL-PUSH punkt-punkt wzorca. Producent ma kilka wewnętrznych wątków, które send() za pośrednictwem zmq. Jednak dokumenty 0MQ's sugerują, aby nie udostępniać gniazd między wątkami.zmq: można wiele wątków PUSH w prosty push-pull wzór

Czy muszę wysłać jeden wątek?Przyjmując, że nie istnieje ścisły wymóg zachowania porządku wysyłania między wątkami, czy fakt, że gniazdo jest jednokierunkowym simpleksiem, nie pozwala na użycie wielu wątków bez wprowadzania zamków?

Odpowiedz

4

Najprościej zrobić, aby utworzyć oddzielne gniazdo PUSH na każdym z nici producenta i connect wszystkie te gniazda do jednego gniazda PULL w konsumenta.

W instrukcji wyraźnie podano, że gniazda ZeroMQ muszą być używane w jednym wątku. Powiedziałbym, że naruszenie tego wymogu nie jest dobrym pomysłem, nawet jeśli wydaje się, że działa: rzeczy mogą pękać w następnej wersji biblioteki lub na konkretnej platformie lub w określonym scenariuszu obciążenia. Jest to po prostu zbyt ryzykowne.