gpt4 book ai didi

创建一个 pthreads 线程池来处理 get 请求

转载 作者:太空宇宙 更新时间:2023-11-03 23:31:12 24 4
gpt4 key购买 nike

我很难相信没有这方面的答案或教程,但我正在努力寻找任何地方!

我必须(并且已经)构建一个多线程服务器来处理 C 中的 GET 请求。对于满分,这需要使用线程池。目前我的主线程接受连接并将它们传递给新线程。

我可以在网上找到一些线程池的实现,但是如果我有 Java 背景,那么理解它们是很困难的。他们似乎也都使用任务队列。

考虑到您可以告诉监听调用队列连接,这似乎是不必要的。我在某个地方看到 accept 是线程安全的(说我也听到 POSIX 说 safe its more of safeish?)这是一个明智的做法吗?或者每个线程等待接受而不是停止执行直到通过连接,开销会更高吗?

如果是这种情况,我将如何在 C 语言中执行此操作?我想我需要保留一个线程安全的数据结构来存储指向每个线程的指针和一个指示它们是否忙碌的值?并有一些方法来重新启动线程并将连接传递给它?但我不知道如何做到这一点,也无法在互联网上找到任何简单的教程。

任何建议或教程链接将不胜感激!

谢谢

最佳答案

Accept()thread-safe .

实际上,您所描述的是一种使用线程池实现套接字服务器的优雅方法 - 在所有这些中调用 accept(),操作系统将只负责唤醒一个线程连接到达。干得好,当我不得不实现这些事情时,我从来没有真正考虑过这个选项。

据我所知,同时在多个线程中调用 accept() 并没有真正的开销——所有线程都将休眠直到连接被接受,因此它们不会有效地消耗任何 CPU 时间。

关于创建一个 pthreads 线程池来处理 get 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15033376/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com