相关疑难解决方法(0)

c ++ 11进程间原子和互斥

我有一个Linux程序,它产生几个进程(fork)并通过POSIX共享内存进行通信.我想让每个进程分配一个id(0-255).我的目的是将一个位向量放在共享内存区域(初始化为零)并进行原子比较并交换一点来分配一个id.

是否有一个c ++ 11友好的方式来做到这一点?我可以创建一个原子位集吗?我可以跨进程使用互斥吗?我如何确保在所有进程中只调用一次构造函数?

c++ c++11

19
推荐指数
2
解决办法
9751
查看次数

在进程之间共享条件变量和互斥:是否必须先锁定互斥锁?

我需要一些帮助来了解如何在C中使用条件变量来解决练习.这是一个小例子:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <fcntl.h>

#define OKTOWRITE "/oktowrite"
#define MESSAGE "/message"
#define MUTEX "/lock"

int main(int argc, char** argv)
{
  pthread_cond_t* condition;
  pthread_mutex_t *mutex;
  char* message;
  int des_cond, des_msg, des_mutex;
  int mode = S_IRWXU | S_IRWXG;

  des_mutex = shm_open(MUTEX, O_CREAT | O_RDWR | O_TRUNC, mode);

  if (des_mutex < 0)
  {
    perror("failure on shm_open on des_mutex");
    exit(1);
  }

  if (ftruncate(des_mutex, sizeof(pthread_mutex_t)) == -1)
  {
    perror("Error …
Run Code Online (Sandbox Code Playgroud)

c mutex ipc pthreads condition-variable

17
推荐指数
2
解决办法
3万
查看次数

标签 统计

c ×1

c++ ×1

c++11 ×1

condition-variable ×1

ipc ×1

mutex ×1

pthreads ×1