我很难相信没有答案或教程,但我很难在任何地方找到一个!
我必须(并且必须)构建一个多线程服务器来处理 C 中的 GET 请求。要获得满分,这需要使用线程池。目前我的主线程接受连接并将它们传递给一个新线程。
我可以在网上找到一些用 c 语言实现的线程池,但是来自 Java 背景的人很难理解它们。他们似乎也都使用任务队列。
考虑到您可以将侦听呼叫告知队列连接,这似乎没有必要。我在某处看到接受是线程安全的(说我也听到 POSIX 说安全它更安全?)这是一种明智的做法吗?或者每个线程等待接受而不是在通过连接之前停止执行,开销会更高吗?
如果是这种情况,我将如何在 C 中执行此操作?我想我需要保持一个线程安全的数据结构,存储指向每个线程的指针和一个指示它们是否忙的值?并且有一些方法可以重新启动线程并传递一个连接?但我不知道如何做到这一点,也无法在互联网上找到任何简单的教程。
任何建议或教程链接将不胜感激!
谢谢