首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

求多线程下文件的读写操作的解决方法

2012-03-03 
求多线程下文件的读写操作的解决办法voidlock_set(intfd,inttype){structflocklocklock.l_whenceSEEK_SE

求多线程下文件的读写操作的解决办法
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))。

热点排行