一种线程同步共享链表的方式----waitlist

来源:互联网 发布:勇者斗恶龙java代码 编辑:程序博客网 时间:2024/05/17 05:53

线程同步中遇到的一类问题

线程中同步共享链表方式一般有信号量和锁,但是有些场景单纯的使用 信号量和锁,不能满足特定场景的需求。

比如:打印配置信息,当现实的内容比较多的时候,需要放权出去,这个时候,会有别的任务(这里的任务是指的一个线程 )去删除打印的节点,很可能就会异常。

thread A 遍历链表: 1—> 2—> 3—> 4—> 5—> 6—> NULL ,在遍历完2,开始遍历3处放权。
thread B delete 3

如果某一时刻调度按照 threadA –> threadB–> threadA 的方式调度,就会出现访问空指针的异常。

异常场景模拟代码

详细代码见github

原创粉丝点击