linux C socket编程多线程问题

是1个服务器对多个客户端,代码框架基本就下面这样子socketbindlistenwhile(1){client_socket_fd=accept(server_sock... 是1个服务器对多个客户端,代码框架基本就下面这样子
socket
bind
listen
while(1){
client_socket_fd = accept(server_socket_fd,(struct sockaddr *)&client_addr,&client_sockaddr_size)
pthread_create(.........) //每个线程内完成一个客户端的数据的收发

现在问题是线程中会调用到client_socket_fd这个变量,但是client_socket_fd会变化的,导致线程的数据都是乱的,怎么解决
展开
 我来答
bai_lj
2014-04-21 · TA获得超过276个赞
知道小有建树答主
回答量:505
采纳率:77%
帮助的人:281万
展开全部
在线程函数内定义同样类型的局部变量,创建线程时将client_socket_fd
值传递给该局部变量,以后在该线程中只使用线程函数中的局部变量就可以了。

例如:
pthread_create(&iThreadId, &attr, ThreadProc, client_socket_fd);
线程函数:(其中使用fd)

void *ThreadProc(void *lpVoid)
{
SOCKET *fd = (SOCKET)lpVoid;
... ...
}
冰00星
2014-04-21 · TA获得超过736个赞
知道小有建树答主
回答量:540
采纳率:0%
帮助的人:315万
展开全部
线程加锁,每次读取完成之后释放这个sock不就行了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式