我想创建一个非阻塞连接.像这样:
socket.connect(); // returns immediately
Run Code Online (Sandbox Code Playgroud)
为此,我使用另一个线程,一个无限循环和Linux epoll.像这样(伪代码):
// in another thread
{
create_non_block_socket();
connect();
epoll_create();
epoll_ctl(); // subscribe socket to all events
while (true)
{
epoll_wait(); // wait a small time(~100 ms)
check_socket(); // check on EPOLLOUT event
}
}
Run Code Online (Sandbox Code Playgroud)
如果我运行服务器然后运行客户端,那么一切正常.如果我第一次运行客户端,等待一小段时间,运行服务器,然后客户端不连接.
我究竟做错了什么?也许它可以做得与众不同?
此代码具有Visual Studio error C3892.如果我std::set改为std::vector- 它有效.
std::set<int> a;
a.erase(std::remove_if(a.begin(), a.end(), [](int item)
{
return item == 10;
}), a.end());
Run Code Online (Sandbox Code Playgroud)
怎么了?为什么我不能std::remove_if用std::set?
如何设置权重tsquery?我需要为tsquery从plainto_tsquery.
是否可以?类似的东西setweight(plainto_tsquery(''), 'A'),但它仅适用于tsvector.
一台服务器--ZMQ_ROUTER,许多客户端 - ZMQ_DEALER
如何在服务器(ZMQ_ROUTER)上向所有客户端发送消息(ZMQ_DEALER)?
UPD:我知道有PUB-SUB模式,这正是我需要的.但我想只使用当前的ROUTER-DEALER插座.可能吗?