【发布时间】:2023-03-14 21:15:01
【问题描述】:
我有一个问题,我需要中断并等待输入。知道怎么做吗?
bool run;
void partReceive() {
while(run) {
...
int rect_len = (int) recvfrom(servSockFD, buffer,
MAX_MESSAGE_LEN, 0, (struct sockaddr*) &newAddr, &slen);
...
}
}
void partCount() {
int i = 0;
while(run) {
i++;
if (i >= 5) {
run = false;
}
}
}
int main() {
run = true;
thread receive(partReceive);
thread count(partCount);
count.join();
receive.join();
return 0;
}
这是行不通的,因为 partReceive() 将一直保持到它接收到来自套接字的输入..
【问题讨论】:
-
怎么办?
-
我会担心
partCount,因为它与实际接收零件没有关系来计算它们 -
您使用
recvfrom()意味着正在使用UDP 套接字。如果是这样,那么只需将run设置为false,然后将sendto()一个空白数据报发送到侦听套接字端口,并让partReceive()正常接收它,然后它就可以自行退出。
标签: c++ multithreading sockets