信号量互斥的问题

BlackSnail 2005-10-15 06:49:06
开发环境:Windows 2000+VC6.0

一块大共享内存,分为5个部分,供不同的线程读取(实际上每次读取都要将读取的内容从共享内存中删除,所以相当于只有写者没有读者)。线程都是调用同一个接口来访问共享内存,只是要传进去一个标志,表示自己要读5个部分中的哪个部分。

用什么来保证互斥访问更好呢?CreateMutex或者CreateSemaphore?或者其它?

谢谢。
...全文
260 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sevencat 2005-10-17
  • 打赏
  • 举报
回复
假如是我,我会写成这样子。
class CriticalSecion;

class ShareMemory
{
void write()
{
CriticalSessionLocker locker(_lock);
....
}
void read()
{
CriticalSessionLocker locker(_lock);
....
}
private:
CriticalSesion _lock;
}
rabbitweng 2005-10-16
  • 打赏
  • 举报
回复
是否可以考虑用critical section?这个好像效率最高,其次是Mutex,最后是semaphore
steel007 2005-10-16
  • 打赏
  • 举报
回复
恩,5个Mutex,5把锁就搞定。
ookook 2005-10-15
  • 打赏
  • 举报
回复
5个Mutex
BlackSnail 2005-10-15
  • 打赏
  • 举报
回复
补充一点:
关键是访问同一部分的线程必须互斥,
而如果多个线程访问不同的部分就没关系,
所以要用到信号量组。

15,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧