日期:2014-05-16  浏览次数:20640 次

求多线程下文件的读写操作的解决办法
void   lock_set(int   fd,int   type)
{
struct   flock   lock;
lock.l_whence   =   SEEK_SET;
lock.l_start   =   0;
lock.l_len   =   0;
while(1)
{
lock.l_type   =   type;
if(fcntl(fd,F_SETLK,&lock)   ==   0)
{
return;
}
}
}
这个是我用记录锁写的一个函数,但是存在一个问题,就是while循环会浪费大量的CPU资源。
希望大家给各提示,谢谢

------解决方案--------------------
把if(fcntl(fd,F_SETLK,&lock)改变为
fcntl(fd,F_SETLKW,&lock)
F_SETLKW 这是F_SETLK的阻塞版本(命令名中的W表示等待(w a i t))。