我有服务器,包含file.txt。我有多个客户端可以读/写这个文件(在服务器上找到)。我希望在处理写请求时锁定其他写请求。但是,永远不会锁定读取请求。有人知道,最好处理这种竞争条件吗?我想我可以通过在服务器中为每个客户端提供一个结构来解决这个问题,其中每个结构包含客户端"的" ip地址,以及用于启用写入客户端的"标志& #34;和某种互斥体。我希望我足够清楚:)感谢任何反馈!
答案 0 :(得分:0)
听起来你想要reader-writer locks。实际的读者和编写者是远程客户端的事实是一个小细节,因为实际的读者和编写者只是服务器端的线程。
链接的维基百科文章提到pthread_rwlock_t
,它由POSIX定义,应该可以在现代Linux发行版上通过pthreads获得。
更新:根据OP的评论,他正在尝试跨进程同步文件访问。这意味着他应该使用flock,以及this answer中提到的警告。