首页 新闻 搜索 专区 学院

多线程中使用lock后是不是和单线程一样

0
悬赏园豆:5 [待解决问题]

今天想到一个问题;

在多线程中为了防止多个线程同一时间执行相同的一段代码使用lock,那么在这种情况下就是一个线程一个线程执行这段代码.那么从这个意义上说就应该是单线程。那么效率和单线程应该是一样的吧

lsjhello的主页 lsjhello | 初学一级 | 园豆:149
提问于:2015-07-14 20:35

我也在思考这个问题,自己的理解:当执行操作同一资源时,因为有锁,确实是只有一个能跑。但是创建多线程之后,操作同一资源前,这段时间是多线程同时跑

Cps-Ferris 2个月前
< >
分享
所有回答(7)
0

“为了防止多个线程同一时间执行相同的一段代码使用lock”这个说法不太正确,使用lock是为了让多个线程一个一个访问它们所共有的资源,所以让这段代码一次只有一个线程执行只是手段,不是目的。

要说效率,没有比较过。

毫无依据地、只是“我认为”:开5个线程分别执行一段加lock的代码应该没有直接把这段代码循环5遍效率高,因为毕竟要消耗资源分配线程以及切换线程吧。

liqipeng | 园豆:1160 (小虾三级) | 2015-07-14 21:00
0

上面说的是对的.lock锁的其实是代码.并不是资源.lock的这段代码确实是单线程的.同时只会有一个线程在执行,

但效率的话就要看你怎么lock,跟语法没关系.

吴瑞祥 | 园豆:29369 (高人七级) | 2015-07-15 09:28
0

不是单线程,是串行执行,效率比单线程低。

Launcher | 园豆:45045 (高人七级) | 2015-07-15 09:28
0

对于独享资源需要使用lock 确保 线程之间没有竞争的使用!

小眼睛老鼠 | 园豆:2779 (老鸟四级) | 2015-07-15 17:55
0

lock的地方,一次只能有一个线程通过,其他线程排队。题主,你自己想想!

testasdfg | 园豆:204 (菜鸟二级) | 2015-07-29 17:43
0

今天我突然也想到这个问题,和楼主想到的是同一个想法,那这样的话那还要多线程干嘛呢?疑惑?

Andrew_F | 园豆:202 (菜鸟二级) | 2018-04-19 10:13

因为不是每个地方都要独占资源的啊,不是独占的就是并行执行了

支持(0) 反对(0) DHclly | 园豆:204 (菜鸟二级) | 2021-03-16 13:59
0

我也在思考这个问题,自己的理解:当执行操作同一资源时,因为有锁,确实是只有一个能跑。但是创建多线程之后,操作同一资源前,这段时间是多线程同时跑

caipeishen | 园豆:202 (菜鸟二级) | 2022-07-28 10:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册