多线程加锁之后不就是单线程了吗

突然灵机一动想到:多线程加锁之后不就是单线程了吗,其实在学java的时候老师应该有讲过,但是都忘记了。

Q: 多线程 lock 之后不就是单线程了吗?

答:lock并不需要锁定所有的操作。操作共享资源的时候,才需要锁定。如:

string 下载Url;
lock (list)
{
   下载Url = 取出Url(list);   // 1毫秒锁定,只能一个线程
}
下载到硬盘(下载Url);  // 需要2秒,这里可以多线程下载。

个人理解:由于锁定时只用了1毫秒,在下载东西时,cpu就可以执行另外的线程,进而表现出很快,而单线程在执行下载到硬盘的指令时,cpu并没有被利用,所以速度会很慢。

 

转:https://bbs.csdn.net/topics/392019228

posted @   wazjr  阅读(561)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 易语言 —— 开山篇
· 实操Deepseek接入个人知识库
· Trae初体验
点击右上角即可分享
微信分享提示