linux多线程数据冲突

来源:互联网 发布:复杂网络聚类方法 编辑:程序博客网 时间:2024/05/17 07:29

最近在写Linux服务器多线程编程,但是出现了当主线程接收客户端连接并发创建子线程的时候,子线程接收到主线程的数据出现了错误的情况,经过发现,是因为在子线程中没有立即处理主线程传递过来的数据,而是过了一会才将数据进行处理,而由于主线程中频繁的创建子线程,主线程传递给子线程中的数据会出现被重写,所以,在子线程中会出现数据出错的情况。

 

void *testThread(char *argc)

{

       sleep(1) ;

       int connfd = *((int*)argc) ;

       printf("%d\n",connfd) ;

       free(argc) ;//释放传进来的整型指针

        return ;

}

int main()

{

                int connfd = 0 ;

                for(;connfd<100;connfd++)

                {

                                        int *s = (int*)malloc(sizeof(int)) ;

                                         *s = 1024 ;

                                        pthread_t thread ;
                                        pthread_attr_t   attr;
                                        pthread_attr_init(&attr);
                                        pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);

                                        pthread_create(&thread,&attr,&testThread,(void*)s) ;

                }

}

原创粉丝点击