roo*_*ook 8 c sockets apache multithreading thread-safety
我坐下来阅读Apache的MPM prefork.c,这段代码使用了一个名为accept_mutex阻止多个线程调用的变量accept().这很奇怪,因为据我所知accept()是线程安全的.
accept()线程安全吗?这是平台兼容性问题吗?如果是这样,哪个平台实现了非线程安全accept()?
Apache性能调优文档中的 " accept()序列化 - 多个套接字"中对此进行了解释.简单地说,至少某些操作系统下,传入的连接将唤醒所有正在等待传入连接的Apache进程select()或poll(),反而会导致accept()失败的所有,但他们中的一个.这是低效的,因此使用互斥锁来确保一次只有一个进程接受传入连接.
| 归档时间: |
|
| 查看次数: |
835 次 |
| 最近记录: |