【发布时间】:2014-02-19 05:58:43
【问题描述】:
我是 C(LINUX) 中的多线程的新手
我正在做一个 multiple client server(single) 程序,这里我使用 threads 来执行服务器,所以当客户端等待回复时我需要其他线程(其他服务器线程)不应运行,
while(n = read(conn->sock, buffer, sizeof(buffer)) > 0 )
{
//HERE I NEED THE LOCK THE OTHER THREADS FROM THEIR EXECUTION
//process
//process
//end of process
//HERE I NEED TO RELEASE LOCK FOR THE OTHER THREADS EXECUTION
}
}
我没有在网上找到任何具体的东西,即使是一些示例 URL 也会有所帮助
【问题讨论】:
-
为什么?大概这是处理此套接字的唯一线程。如果必须,它将阻止
send(),并且它似乎没有做任何其他需要锁定全局资源的事情。例如,buffer可以是局部变量。 -
哦,顺便说一句,
while循环中的条件是错误的,operator precedence 对于>运算符来说更高,所以你正在做的是将结果分配给n比较,并将其用于条件。 -
为什么是无条件的
break?它使循环无用,它会跳过解锁。 -
是的,我注意到了,我忘了改变,谢谢
标签: c++ c linux multithreading sockets