sách gpt4 ai đã đi

push - ZeroMQ 推/拉模式

In lại 作者:行者123 更新时间:2023-12-01 06:43:16 37 4
mua khóa gpt4 Nike

我决定编写一个测试代码来查看 pusher - many pullers bundle 是如何工作的,我的怀疑成真了。

拉取器按照连接的顺序接收消息,例如第一个消息由第一个连接的拉取器接收,第二个由第二个连接,等等。我模拟了其中一个拉取器在收到消息后保持忙碌的情况,但是当它是时候收到一条消息了,它无论如何都要排队,所以我“丢失”了消息。那很糟。我希望下一个“免费”puller 收到此消息。是真的吗?

我的测试代码。我使用 zmqpp 作为绑定(bind)

void main()
{
auto _socket = sIpcContext->CreateNewSocket(zmqpp::socket_type::push);
_socket->bind("tcp://*:4242");


for (auto i = 0; i < 3; ++i)
{
new std::thread([&](int _idx)
{
auto idx = _idx;
auto sock = sIpcContext->CreateNewSocket(zmqpp::socket_type::pull);
sock->connect("tcp://127.0.0.1:4242");

for (;;)
{
std::string msg;
sock->receive(msg);
std::cout << idx << " received: " << msg << std::endl;
if (idx == 1)
{
std::cout << "Puller 1 is now busy" << std::endl;
std::this_thread::sleep_for(std::chrono::seconds(10000));
}
}
}, i);
}

for (auto i = 0;; ++i)
{
_socket->send(std::to_string(i));
std::this_thread::sleep_for(std::chrono::seconds(1));
}
}

我得到这个输出:

0 received: 0
0 received: 1
1 received: 2
Puller 1 is now busy
2 received: 3
0 received: 4
2 received: 6
0 received: 7
2 received: 9
0 received: 10
2 received: 12
0 received: 13
2 received: 15

如您所见,5、8 等被“遗漏”但实际上在 puller #1 中排队

1 Câu trả lời

是的,推/拉式套接字非常愚蠢,可以让这种情况发生。您可以使用其他套接字(例如路由器/经销商)将工作发送给免费工作人员。

关于push - ZeroMQ 推/拉模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30107055/

37 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com