gpt4 book ai didi

c - 多线程程序 : waiting on input

转载 作者:行者123 更新时间:2023-12-05 01:14:23 29 4
gpt4 key购买 nike

我们正在创建一个点对点程序(在 c 中),我们正在使用多个线程,以便该程序可以监听新连接并接收/发送数据。

问题是,我记得我的教授告诉我们,如果你有多个线程在同一个进程上运行,如果一个线程必须等待用户输入,整个进程就会“停止”,所以其他线程都不会继续运行.

但后来我们一直在阅读,似乎如果一个线程正在等待输入,其他线程将照常运行......

哪个是对的?如果我们让程序在一个线程上等待用户输入(你知道,比如连接到 X 或向 X 发送消息),而另一个线程只是坐在那儿无限循环等待对等点尝试连接,它是否仍然正在监听连接?

谢谢!希望这是有道理的......线程是如此困惑:(

最佳答案

是的,在大多数现代操作系统上,一个进程中的多个线程可以等待输入(来自 stdin、来自套接字等),而其他线程可以工作。

考虑您的浏览器。当您上网时,当您等待页面加载时,用户界面不会卡住(即浏览器的线程之一正在等待来自连接到远程主机的套接字的输入)。

(...) and another thread just sitting there in an infinite loop waiting for a peer to try to connect (...)

这称为忙等待,它被认为是一种不好的做法。看看select(2) , epoll(4)或相关机制。

关于c - 多线程程序 : waiting on input,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8288693/

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