- 论坛徽章:
- 0
|
跪求linux下多线程网络编程问题
我也感觉是io冲突的问题,但是各个子线程肯定是使用了各自不同的描述字,不知道在多线程并发的时候,不同的描述字在几乎完全同时的情况下是否会有io冲突,代码简单如下:
string g_str[2];
void *threadt1(void *arg)
{
int sock;
pthread_detach(pthread_self());
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
........
if (connect(sock, (struct sockaddr*)&sin, sizeof(sin)) < 0)
........
read....
g_str[0] = "XXXX";
}
void *threadt2(void *arg)
{
int sock;
pthread_detach(pthread_self());
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
.......
if (connect(sock, (struct sockaddr*)&sin, sizeof(sin)) < 0)
........
read..
g_str[1] = "XXXX";
}
main()
{
num = 0;
if(pthread_create(&id1,NULL,threadt1,(void *)num))
........
num = 1;
if(pthread_create(&id2,NULL,threadt2,(void *)num))
........
if (!g_str[0].empty() && (!g_str[1].empty() )
.......
}
因为我还有一些别的方面的考虑没用pthread_join来获取线程返回值,用了全局变量的方式,主要是请教高手关于并发出错的问题,谢谢了 |
|