- 论坛徽章:
- 15
|
本帖最后由 yulihua49 于 2016-06-03 15:16 编辑
回复 15# VIP_fuck
你就同步的先用着,将来需要异步时,加一个异步插件就行了,所有的上层程序都无需修改。
但是要注意,不能有线程锁跨越这个函数,你得想其他方法代替。因为调用之前和之后,可能不是一个线程,导致不能解锁。
看看我的用法:
if(Lock) pthread_mutex_unlock(Lock); //线程锁不可跨AIO
ret=sc_connect(pl,rs);
if(Lock) pthread_mutex_lock(Lock);
另一个地方:
pthread_mutex_lock(&nodep->mut);
nodep->lock++;//软锁
pthread_mutex_unlock(&nodep->mut);
}
pthread_rwlock_unlock(&dmlock);
if(nodep->cmd) {
result=nodep->cmd(gp,json_object_object_get(json,"param"),err_json);//里边可能AIO,执行之前必须解除所有的线程锁。
pthread_mutex_lock(&nodep->mut);
nodep->lock--;//软解锁
pthread_mutex_unlock(&nodep->mut);
|
|