当前位置: 技术问答>linux和unix
多线程同步问题
来源: 互联网 发布时间:2015-11-15
本文导语: 我定义一个全局的整数变量:long n = 0;现在有多个线程(而且是多cpu环境)可能同时执行n++操作,除了用mutex,请问还有其他办法可以保证正确++吗?因为++操作需要mov到寄存器,再inc 1,再mov会内存等多条指令,中间...
我定义一个全局的整数变量:long n = 0;现在有多个线程(而且是多cpu环境)可能同时执行n++操作,除了用mutex,请问还有其他办法可以保证正确++吗?因为++操作需要mov到寄存器,再inc 1,再mov会内存等多条指令,中间过程可能会被其他线程抢占或多个cpu同时执行的可能。windows系统有互斥的增量函数,不知道linux有没有类似的函数?
|
内核有atomic_inc和atomic_dec
|
信号量
|
用 volatile 变量
|
我到是觉得最好就用mutex,其他的好象能实现都更麻烦些
|
有点汗了
不知道InterlockedIncrement/InterlockedDecrement(long* p)是怎么实行的哦?
不知道InterlockedIncrement/InterlockedDecrement(long* p)是怎么实行的哦?
|
呵呵,那你就用pthread_mutex_t这个东东嘛!!!!!
|
自己写线程通信的调度函数:)
ps:还不如mutex...
ps:还不如mutex...
|
理论上pthread是SMP安全的。
|
pthread_mutex_t这
|
我是来看的~~~~
|
关注。