- 论坛徽章:
- 0
|
我有两个线程,其中一个线程select 一个socket, 这个socket是我和外面通讯的接口,跑UDP协议。
另外一个socket是linux内部socket, 是socketpair创建的。是和其他子进程通讯的接口。
具体如下:
switch(select(para.sock + 1, &fdR,NULL,NULL,&csel)){
case -1:
if (errno == EINTR){
ah_dbg(info,"have a interrupt!\n");
return 0;
}
ah_err("select error:%d!\n",errno);
continue;
case 0:
if (get_listen_state == LISTEN_STOP){
ah_dbg(info,"timer out!\n");
break;
}
continue;
default:
if (FD_ISSET(para.sock,&fdR)) {
/*do my thing*/
}
}
另外一个线程的内部socket
FD_ZERO(&fdR);
FD_SET(para.dtls.SocketPair[DTLS_SOCKET_READ], &fdR);
ah_dbg(ssl,"Ready listen socket %d\n",para.dtls.SocketPair[DTLS_SOCKET_READ]);
switch(select(para.dtls.SocketPair[DTLS_SOCKET_READ] + 1, &fdR,NULL,NULL,&sel)){
case -1:
ah_dbg(ssl,"have a interrupt!\n");
continue;
case 0:
ah_dbg(ssl,"dtls select time out\n");
continue;
default:
if (FD_ISSET(para.dtls.SocketPair[DTLS_SOCKET_READ], &fdR)) {
/*do my thing*/
}
问题是第一个select完全正常工作,第二个select经常收到第一个socket的数据(socketpair【DTLS_SOCKET_READ】工作不正常)
请问是甚么问题? |
|