c - 如何在服务器线程和客户端线程之间同步?

标签 c linux pthreads client-server

我的应用程序在服务器端和客户端都创建了文件传输线程。现在,我在客户端使用延迟策略(一个简单的 for 循环),以便在服务器中创建线程之后在客户端创建线程。

该应用程序运行良好。但这是粗糙的,如果不是丑陋的话。我需要找到一种技术方法,让客户端线程在知道服务器线程已经启动之前不会启动。

我尝试使用从服务器到客户端的 send()。客户端的 recv() 必须阻塞服务器的信号,但显然它不会。客户端控制台上的消息是关于连接被服务器拒绝的。有什么提示吗?

最佳答案

select() 可能是您正在寻找的:您给它一组套接字,它会阻塞直到这些套接字上发生某些事情(并且您可以提供超时以避免永远等待) .
调用 select() 等待客户端收到数据,然后调用 recv() 以确保收到的是来自服务器的正确消息。

关于c - 如何在服务器线程和客户端线程之间同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14070191/

相关文章:

c - libav:用 RGB24 样本数据填充 AVFrame?

linux - 让 vixie-cron 记录到文件

linux - 确保网络服务器上文件安全的最佳方法

c - 当线程在 c 中调用 longjmp() 时会发生什么

c - 生成运行到完成的多个线程与让单个线程等待工作之间有区别吗?

c - 分配结构堆与堆栈 : Pthread_create

C:使用引用调用交换键盘音符

Pari C 中 t_REAL 的自定义精度位

c - 我是否正确编写了这个 makefile?

java - Java使用的内存多于堆大小(或正确大小的Docker内存限制)