多线程杂谈

多线程杂谈

作者:陈跃峰

出自:http://blog.csdn.net/mailbomb

 

         多线程编程是一种很常用,但是也有一定的学习难度,本文不涉及多线程的程序如何编写,只通过一些实际的小例子,让大家熟悉一些基本的多线程的概念。

         俗话说得好:“一心不可二用”,指的就是程序编程中的单线程编程,这个属于基本的编程范畴。但是在实际的工作和生活中,还是需要一些协调工作。例如电视上有人展示的左右手同时写字,这个用程序的理解就是在多线程工作,因为人的大脑只有一个,在任何一个小的时间点,只能控制一个手写字,那么就只好控制左手写一点,再控制右手写一点,不断的切换控制,使人觉得在同时写一样,这样实现同时工作。现实里,大家也知道能够两手同时写字的人不多,一个原因是缺乏锻炼,另外一个是该工作的确有难度,多线程编程也是如此。

         多线程其实最核心的就是同时工作,那么再同时工作时就会出现一些问题,典型的就是互斥、同步和死锁。

         互斥指一个内容,线程术语叫临界资源,在任何时候只能被一个线程使用。例如在大家的大学时代,寝室里有台电脑是两个人一起买的,当一个人在使用时,另外一个人就使用不了,如果把这两个人看成线程的话,那么这个电脑就是临界资源,对于这两人来说,电脑就是互斥的。

         有了互斥的问题,就要解决这个问题,所以这两个人可能就要定个规矩,把两个人使用电脑的时间分开,这个就是同步。还有大家排队买票的时候,就在自觉的进行同步。所以同步是解决互斥的一种比较好的办法。同步实现的原理就是在一个线程工作时在临界资源上加一个锁,当前只能自己使用,例如排队买票时一个人在买时,其他的人(线程)就自觉等待。另外一个典型的互斥锁的例子是公共卫生间的使用。

         最后说一下死锁的问题,这是线程编程中比较烦心的一个问题。还以前面的两个人使用电脑为例子,假设两个人规定135三天A用电脑,246三天B用电脑,周日谁用都可以,而且AB都是很礼貌的同学,那么就会出现这样的问题,AB同时想用电脑,A就礼貌的对B说:你先用吧,B也会礼貌的对A说:你先用吧。这样AB让来让去,谁都用不了,则AB两个人(线程)就这样无限制的等待下去,这种现象在线程中称作死锁,是线程编程中必须杜绝的现象。

 

         以上是本人的一些理解,不足之处请大家多多补充和指正。

 
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值