【发布时间】:2016-02-10 10:30:14
【问题描述】:
在C编程中,有没有办法在flock()上实现超时?
谢谢。
#include <sys/file.h>
int flock(int fd, int operation);
【问题讨论】:
-
你的意思是调用函数超时,或者一段时间后自动解锁文件超时?
-
一段时间后,您或许可以使用
alarm或setitimer打断自己。
在C编程中,有没有办法在flock()上实现超时?
谢谢。
#include <sys/file.h>
int flock(int fd, int operation);
【问题讨论】:
alarm 或setitimer 打断自己。
您可以使用 SIG_ALARM 来执行此操作。 http://www.gnu.org/software/libc/manual/html_node/Setting-an-Alarm.html 不过这有点棘手,尤其是在处理多个线程时。您必须确保您的系统将 sig 警报传递给始终设置它的线程,并且可能并非如此......在这种情况下,您需要使用 pthread_sigmask http://pubs.opengroup.org/onlinepubs/009695399/functions/pthread_sigmask.html 确保只有你的线程启用了信号......但是如果 2 个线程同时阻塞了羊群怎么办?您需要为此添加某种互斥体包装器。
【讨论】: