POSIX共享内存中的特殊字段中的非同步写入

时间:2015-12-25 16:39:57

标签: c concurrency synchronization posix

我有一些需要通过POSIX共享内存进行通信的进程。

存储在此共享内存中的结构如下所示:

struct shared_message{
  enum MESSAGE_TYPE type;
  [fields]
  uint8_t error;
};

显然我需要同步对共享内存的访问。但是,如果一个客户端出现故障或收到SIGINT / SIGTERM信号,我想通过将shared_message->错误设置为1来通知其他客户端此错误。 问题是,我不能以同步方式真正做到这一点,因为我会在收到终端信号后及时阻止进程关闭。

在不同步访问的情况下将错误变量设置为1是否安全?我并不关心“丢失更新”,因为我对此标志的唯一做法是将其从零设置为1,但我担心写入此标志可能会以某种方式干扰附近的字段,例如因为写入一个完整的DWORD,而不只是这一个字节。

0 个答案:

没有答案