我们正在创建一个点对点程序(在 c 中),我们正在使用多个线程,以便该程序可以监听新连接并接收/发送数据。
问题是,我记得我的教授告诉我们,如果你有多个线程在同一个进程上运行,如果一个线程必须等待用户输入,整个进程就会“停止”,所以其他线程都不会继续运行.
但后来我们一直在阅读,似乎如果一个线程正在等待输入,其他线程将照常运行......
哪个是对的?如果我们让程序在一个线程上等待用户输入(你知道,比如连接到 X 或向 X 发送消息),而另一个线程只是坐在那儿无限循环等待对等点尝试连接,它是否仍然正在监听连接?
谢谢!希望这是有道理的......线程是如此困惑:(
最佳答案
是的,在大多数现代操作系统上,一个进程中的多个线程可以等待输入(来自 stdin
、来自套接字等),而其他线程可以工作。
考虑您的浏览器。当您上网时,当您等待页面加载时,用户界面不会卡住(即浏览器的线程之一正在等待来自连接到远程主机的套接字的输入)。
(...) and another thread just sitting there in an infinite loop waiting for a peer to try to connect (...)
关于c - 多线程程序 : waiting on input,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8288693/