Tôi có một vòng lặp mà về cơ bản gọi này mỗi vài giây (sau thời gian chờ):phá vỡ ra khỏi ổ cắm chọn
while(true){
if(finished)
return;
switch(select(FD_SETSIZE, &readfds, 0, 0, &tv)){
case SOCKET_ERROR : report bad stuff etc; return;
default : break;
}
// do stuff with the incoming connection
}
Vì vậy, về cơ bản cho mỗi vài giây (được xác định bởi tv), nó reactivates lắng nghe .
Điều này được chạy trên chuỗi B (không phải là chủ đề chính). Có những lúc tôi muốn kết thúc vòng lặp chấp nhận này ngay lập tức từ luồng A (chủ đề chính), nhưng có vẻ như tôi phải đợi cho đến khi khoảng thời gian kết thúc ..
Có cách nào để làm gián đoạn chức năng chọn từ chuỗi khác để luồng B có thể thoát ngay lập tức?
Sidenote: bạn có thể cắt if-statement và chỉ viết trong khi (! Finished). –
Điều đó sẽ mất 100% thời gian CPU. Chắc chắn không được chấp nhận. – kamziro
Rất tiếc, tôi phải hiểu sai rằng – kamziro