易截截图软件、单文件、免安装、纯绿色、仅160KB

求助,关于linux下进程的互斥锁

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,那么一定会报错的。如何解决呢?

引用


相关问答:

請教 LINUX 安裝 PHP5 - PHP / 基础编程

在LINUX裏安裝 CURL 時,出現如下報錯
checking for SSL support in libcurl... no
checking for curl_easy_perform in -lcurl... no
configure: error: There is something ......

linux不能访问access - Java / Java EE

rt,我试了网上直连Acces数据库的方法,windows下没有问题,但是在linux下不行,谁能给点提示?谢谢
你怎么连的?

Acces数据库..
你怎么练的呢?

Java code:

static String DBDRIVER = "sun.jd ......

linux下Eclipse+CDT,如何查看函数的定义、声明

在linux下使用Eclipse+CDT,如果要查看系统提供的一些函数的定义、声明,该如何做呢。
F3好像是可以查看函数声明的,但按了以后没什么反应。是不是需要在Eclipse中设置一下相应的路径才可以。

使用Eclipse建立一 ......

linux 定时重启服务,在线等 - PHP / 基础编程

我的项目所在的环境是php+apache+linux
现我重启服务是 service httpd restart 
现我想定时重启此项服务(定在每天下午4点) 怎么实现呀,多谢
crontab
* 16 * * * service httpd restart

学习 + d ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号