c – 在不同的平台上有不同的东西吗?
发布时间:2020-12-16 10:15:30 所属栏目:百科 来源:网络整理
导读:我在C中编写一个并发的持久性消息队列,它需要对文件进行并发读访问,而不使用内存映射io.简短的故事是,几个线程需要从文件的不同偏移量中读取. 最初我有一个具有典型读/写方法的文件对象,并且线程将获取一个互斥锁来调用这些方法.但是,碰巧我没有在某处正确获
我在C中编写一个并发的持久性消息队列,它需要对文件进行并发读访问,而不使用内存映射io.简短的故事是,几个线程需要从文件的不同偏移量中读取.
最初我有一个具有典型读/写方法的文件对象,并且线程将获取一个互斥锁来调用这些方法.但是,碰巧我没有在某处正确获取互斥锁,导致一个线程在读/写期间移动文件偏移量,另一个线程将开始读/写文件的不正确部分. 所以,偏执的解决方案是每个线程有一个打开的文件句柄.现在我对同一个文件有很多文件句柄,我假设它不是很好. 我想使用像pread这样的东西,它允许将当前偏移传递给读/写函数. 但是,该功能仅适用于linux,我需要在windows,aix,solaris和hpux上进行等效实现,有什么建议吗? 解决方法
在Windows上,ReadFile()函数可以执行此操作,请参阅lpOverlapped参数和
this info on async IO.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |