gpt4 book ai didi

非阻塞套接字中的并发?

转载 作者:太空宇宙 更新时间:2023-11-04 08:41:27 25 4
gpt4 key购买 nike

上下文:

Linux debian 64。我正在自学套接字的工作原理,这非常有趣。单线程应用程序。

问题:

我不清楚异步/非阻塞问题。套接字设置为fcntl(s, F_SETFL, O_NONBLOCK);

1) 如果两个连接恰好同时到达一个套接字,究竟会发生什么?

当套接字是非阻塞时,运行套接字的代码(称为接收)会读取数据并并行或顺序地执行其他操作吗? (单线程应用)

我的意思是,对于非阻塞套接字,传入请求是按顺序处理但速度非常快(非阻塞操作,因此只有网络成为瓶颈而不是 cpu)还是并行处理?

我问是因为我想在脚本中维护一个堆栈数组,并且在将数据插入其中时无法承受竞争条件。

提前致谢

最佳答案

“阻塞”是与操作系统的调度程序相关的非常具体的术语:如果用户空间调用阻塞,则操作系统会取消调度正在进行调用的进程(或线程)。如果一个操作是非阻塞的,这意味着如果操作不能成功,它不会自动和自愿地让你的进程进入休眠状态,而是调用立即返回一个状态表明有没什么可做的。 (当然,您的进程仍然可以通过抢占强制取消调度,但这是一个单独的问题。)

关于非阻塞套接字中的并发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23365543/

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