对于我的项目,我正在从多个线程读取和写入文件,因此我需要实现文件锁定。我已经尝试过fcntl()
,但是似乎该功能仅适用于进程之间的锁定,而不是线程之间的锁定。因此,我正在寻找另一种解决方案。我想出的解决方案(这可能不是最好的)是在我的文件中的每条记录中都有一个字节来指示记录是否被锁定,然后我可以使用繁忙的循环来读取和检查字节。
所以,我有两个问题。首先,实现文件区域锁定最有效的方法是什么?其次,如果我使用繁忙的循环方法,我如何通过大中央调度来优化它?我在想我可以让所有繁忙的循环都发生在发送到的块中dispatch_sync()
。但我不知道这是否会有效地工作。
谢谢。