据我所知,zeromq将为io操作启动新的io线程(epoll,在套接字上发送/ recv),可以在zmq_context中控制io线程的数量。 Zeromq的官方文档称,对于任何网络应用程序,io线程的数量应该至少为1。
我的问题是,有可能我可以控制zeromq不启动任何新的io线程,但只是使用应用程序线程来执行所有的epoll / recv / send?我很乐意这样做,因为我的应用程序处理非常小的任务,并且线程切换的成本不容忽视。
我有一个以前的手工制作的消息层,它可以在一个线程中完成所有工作,但是最近我想切换到更成熟的消息层来处理网络上的各种错误,所以我试着看看我是否可以使用zeromq。