首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >accept返回fd上的互斥锁

accept返回fd上的互斥锁
EN

Stack Overflow用户
提问于 2018-02-20 22:03:34
回答 1查看 162关注 0票数 0

我有一个用worker线程池实现的客户机/服务器应用程序。在服务器的main中,我创建了一个监听程序套接字,然后对于每个客户机,我都使用了一个带accept()的fd来处理客户机的请求。我的问题是:我需要在这个fd上加一个锁来读取客户端的请求并写入答案和数据吗?

EN

回答 1

Stack Overflow用户

发布于 2018-02-20 22:19:41

不是的。侦听器套接字是协调点,您不需要显式协调。甚至不清楚“锁定”套接字意味着什么;套接字不会“锁定”。它们可能会“阻塞”,也可能不会“阻塞”,这取决于它们是如何配置的--这将决定您的操作是立即返回,还是在给定的超时后无限期等待完成。

在侦听套接字上成功accept()时,结果是第二个套接字-这是您用来与客户端通信的套接字,而不是侦听器套接字。

当然,如果您的应用程序是多线程的,那么您的/threads/可能需要锁定或互斥才能获得正确的行为。细节将根据您的实际设计和套接字IO状态与线程的交互方式而变化,这可能会变得非常复杂/棘手。您需要发布代码以获得更具体的答案。

即使是单线程套接字IO,也有更多细节。请参阅https://cis.temple.edu/~giorgio/old/cis307s96/readings/docs/sockets.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48887048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档