我在Linux上使用的是librdkafka-0.11.5 for C。我的C/C++应用程序只是将Kafka数据发送到web服务器,该服务器使用ElasticSearch驱动Kafka消费者。看起来在生产者端,Kafka为每个Unix进程增加了8(8)个内部线程。这给我们带来了一个问题,因为我们对每个Linux机器的线程数量有一个硬性限制。
有没有人知道为什么增加了8个线程?会不会是因为我的Linux机器有4个CPU,并且线程池</
我想要创建一个队列来存储我的任务,我希望它是一个缓冲队列,我想使用一个信号载体来保证它的线程安全,因为我使用几个线程来执行从任务队列中弹出的任务。当队列的大小小于buffer_size (由我定义的变量)时,add_task线程将把新任务推送到任务队列,当任务线程满时,任务线程将被阻塞,因此我需要一个最大值等于buffer_size的信号池。initial count N
我在服务器的C++ (StartThreadpoolIo/StartThreadpoolIo)中使用了新的Thread Pool Windows API来管理IO线程池(客户端通过套接字连接)。我已经探索了MSDN的细节,但没有发现-我如何限制工作线程的数量?我可以限制通过CreateThreadpool (SetThreadpoolThreadMaximum和SetThreadpoolThreadMinimum)创建的线程池的工作线程,但不能限制Create