夏天/isummer

Sun of my life !Talk is cheap, Show me the code! 追风赶月莫停留,平芜尽处是春山~

博客园 首页 新随笔 联系 管理

  其实你可以这样想,函数本身只是代码,代码是只读的,无论多少个线程同时调都无所谓(因为只读嘛)。

  但是函数里面总要用到数据,如果【用thread_local 解决】数据属于线程(比如函数参数、局部变量,存在栈上,每个线程都有自己的栈),那么同时调还是没关系,因为用的本线程的数据;但是如果用了一些全局数据,比如全局变量,同时操作一个数据结构(如对一个链表有什么操作),那就不行了,这时候锁【Mutual, lock】就出来了。

  因此需要互斥处理的,一般是函数中有全局变量,有动态申请的空间,有静态局部变量,有需要进程数据循环发送(进程传参数给线程)之类的操作需要进行互斥处理

参考博客:

 1. https://blog.csdn.net/heybeaman/article/details/81189230

 2. https://blog.csdn.net/xiaowei123aa/

posted on 2020-12-28 10:03  夏天/isummer  阅读(2086)  评论(0)    收藏  举报