Linux下的线程同步问题
socket编程,每客户单线程,支持链路切换,如何判断一个新到的connect请求是链路切换的还是一个新的客户端的?windows下利用内核对象的命名唯一性可以解决,例如每个客户建立一个以客户名为名字的event,connect请求到来后都新创建一个线程,然后看event是否存在,存在则是链路切换的,不存在则是新客户端的,Linux下如何实现呢?谢谢。
此外,
HANDLE tmpHandle = CreateFile(tempPath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if ( tmpHandle == INVALID_HANDLE_VALUE)
{
bFinish = (FindNextFile(hSearch, &fileData) == 0);
continue;
}
else
{
CloseHandle(tmpHandle);
}
上述代码在遍历时可以跳过正在被其他程序使用的文件,但是遍历效率下降十倍!即对每一个文件都创建内核对象再紧跟着close会浪费大量的cpu周期,且cpu占有量也较高。如何遍历时跳过正在被其他程序使用的文件,各位大侠,请出手。
主要是第一个问题,第二个问题慢就慢点,还能解决,第一个不知如何解决,谢谢。