【发布时间】:2016-01-09 10:44:45
【问题描述】:
我正在开发一个客户端程序,它将作为基本的即时通讯工具运行。我正在使用 pthread 打开一个线程,专门用于等待接收消息和读取消息。使用 pthread_cond_wait 是等待read(sockfd, buffer, 256) 高于 0 的正确方法吗?
void *threadRead() {
while (1) {
bzero(buffer,256);
pthread_cond_wait(&buffer_lock, read(sockfd, buffer, 255) > 0);
n = read(sockfd, buffer, 255);
printf("%s\n",buffer);
}
}
您知道,我只需要等到read() 返回高于0 的值即可继续,但我找不到合适的系统来执行此操作。如果有人可以链接一些能让我走上正轨的东西或给我一个很好的提示。
【问题讨论】:
-
这不是你的做法。您需要使用
select()等待套接字上的输入。
标签: c multithreading pthreads conditional-statements wait