多线程中的基本概念

本文概要介绍了多线程编程中的关键概念,包括数据竞争、竞争条件、同步、并发控制和死锁。数据竞争是多个线程访问同一数据导致的冲突,同步和并发控制是解决这一问题的手段,而死锁是加锁不当可能导致的结果。理解这些概念对于避免多线程编程中的错误至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Summary:

感性的总结一下多线程中的几个基本概念(容易混淆的概念)。


谈到多线程,一般人多少有点害怕,不过,在这个多核多线程的年代,甚至众核的年代,如果不能掌握一些并行多线程等相关的技术,那就说不过去了。当谈及多线程时,最基本也是经常会遇到的几个概念就是数据竞争(竞争条件)、同步、并发和并发控制、死锁(加锁)等。下面对其简要的分析,由于只是一个感性的分析,在此就不举例了。


首先说明的是,多线程的这些概念其实很多都是很普遍的概念,不仅仅存在于多线程编程中,下面只分析在多线程中的具体含义。


数据竞争(Data Race):

所谓的数据竞争,很容易理解,多个线程同时访问同一数据导致冲突(数据不正确)就产生了数据竞争。其中,“访问”包括读和写操作,所以自然,数据竞争就包括了读写竞争、写写竞争,有人会问,为何没有读读竞争,这是显然的了,同时读不会产生错误的结果。

如果需要专业一点的 说法,参考http://hi.baidu.com/baituxp/blog/item/6daa5f3770895bcba3cc2b85.html有:

Data race occurs when two conficting accesses to one shared variable are executed without proper synchronization, e.g., not protected by a common lock.

即:data race 是因为没有用足够的synchronization 来保护多个线程共享的变量,引起冲突。


竞争条件(Race Condition):

Wiki:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值