linux环境下,g++4.33编译器。有几个进程共享一个参数,就需要互斥锁的帮忙,请注意,是进程而不是线程,而且是在linux下的,所以vc附带的createMutex肯定是不好用了,哪位达人能给点指教。
因为前面需要用到fork(),wait()函数,所以我选择了进程而不是线程,程序写到现在改起来又很麻烦。去查资料,不是vc下的互斥锁,就是linux下对线程的mutex。不知道线程的mutex对进程是不是也好用呢?
进程间可以用mutex,进程间通信用共享内存,在mutex初始化的时候第2个参数写成某个值就可以把mutex初始化到共享内存中(具体记不清了,你可以搜一下).
不过也不清楚你的这个参数是什么,想要怎么共享,现在的进程间通信是什么方式.还是写清楚点比较好.
mutex如果是创建在共享内存的,就可以锁不同进程。
是这样的,有一个寻路引擎,引擎下有一个函数叫 createRequest,当引擎每从上一层获得一个task,就会开启一个进程来运行createRequest,当然这个函数中也用到了子进程来控制等待时间和等待其他进程的信号等等。
而createRequest需要读写引擎下的一个路由表。
我现在的问题是,如何创建mutex,才能在不同进程读写路由表的时候对其进行保护。注意,是在linux下的,vc的库函数是不好用的。
可以写到共享内存里用mutex.
或者用信号量.
这个路由表如果是文件的话可以用fcntl.
是要用pthread_mutex_t locker;
然后pthread_mutex_lock(&locker);
解锁用pthread_mutex_unlock(&locker);么?
还是说需要别的语句来把mutex共享到内存里?问题是如果一个createRequest创建了一个mutex,那么再次调用createRequest就会再次创建mutex,那么一定会报错的。如何解决呢?