【发布时间】:2009-11-11 17:47:35
【问题描述】:
我有一个客户端使用 select() 来检查是否有任何东西要接收,否则它会超时并且用户能够发送()。哪个效果很好。但是,程序锁定等待用户输入,所以它不能再 recv() 直到用户发送了一些东西。 我在使用线程方面也不太走运,因为我似乎找不到好的资源,这告诉我如何使用它们。
我尝试为 send 和 recv 函数创建两个线程(使用 CreateThread),这两个函数基本上是使用 while 循环来保持发送和接收的两个函数。然后两个 CreateThreads() 被包裹在一个 while 循环中,否则它似乎就退出了。
我以前基本上没有线程方面的经验,所以我对我一直在做的事情的描述可能听起来很荒谬。但我会很感激任何帮助,在这种用途中正确使用它们,或者替代方法也很好。
【问题讨论】:
-
你能发布一些重现问题的最小代码吗?如果您仅调用 recv() 以获取可读套接字集中的套接字返回,则应阻止该调用。每次从选择返回时,您是否多次调用 recv()?您是否检查 select() 返回后指示了哪些套接字?