linux线程间的同步与互斥知识点总结

2023-12-26 44阅读

同步和互斥有什么联系和区别?

  举例说明:   假如把整条道路看成是一个【进程】的话,那么马路中间白色虚线分隔开来的各个车道就是进程中的各个【线程】了。   

linux线程间的同步与互斥知识点总结(图片来源网络,侵删)

①这些线程(车道)共享了进程(道路)的公共资源(土地资源)。   

②这些线程(车道)必须依赖于进程(道路),也就是说,线程不能脱离于进程而存在(就像离开了道路,车道也就没有意义了)。   

③这些线程(车道)之间可以并发执行(各个车道你走你的,我走我的),也可以互相同步(某些车道在交通灯亮时禁止继续前行或转弯,必须等待其它车道的车辆通行完毕)。   

linux线程间的同步与互斥知识点总结(图片来源网络,侵删)

④这些线程(车道)之间依靠代码逻辑(交通灯)来控制运行,一旦代码逻辑控制有误(死锁,多个线程同时竞争唯一资源),那么线程将陷入混乱,无序之中。   

⑤这些线程(车道)之间谁先运行是未知的,只有在线程刚好被分配到CPU时间片(交通灯变化)的那一刻才能知道。   注:   由于用于互斥的信号量sem与所有的并发进程有关,所以称之为公有信号量。公有信号量的值反映了公有资源的数量。只要把临界区置于P(sem)和V(sem)之间,即可实现进程间的互斥。就象火车中的每节车厢只有一个卫生间,该车厢的所有旅客共享这个公有资源:卫生间,所以旅客间必须互斥进入卫生间,只要把卫生间放在P(sem)和V(sem)之间,就可以到达互斥的效果。

相交进程之间的关系主要有两种,同步与互斥。所谓互斥,是指散步在不同进程之间的若干程序片断,当某个进程运行其中一个程序片段时,其它进程就不能运行它 们之中的任一程序片段,只能等到该进程运行完这个程序片段后才可以运行。所谓同步,是指散步在不同进程之间的若干程序片断,它们的运行必须严格按照规定的 某种先后次序来运行,这种先后次序依赖于要完成的特定的任务。  显然,同步是一种更为复杂的互斥,而互斥是一种特殊的同步。  也就是说互斥是两个线程之间不可以同时运行,他们会相互排斥,必须等待一个线程运行完毕,另一个才能运行,而同步也是不能同时运行,但他是必须要安照某种次序来运行相应的线程(也是一种互斥)!  总结:互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。  同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源。

linux线程间的同步与互斥知识点总结(图片来源网络,侵删)

thread是什么功能?

1. thread是一种并发编程的工具,用于实现多线程的功能。2. thread的主要功能是实现程序的并发执行,即同时执行多个任务。通过创建多个线程,每个线程可以独立执行不同的任务,从而提高程序的效率和响应速度。3. thread的使用可以使程序能够同时处理多个任务,例如在一个网络服务器中,可以使用多个线程同时处理多个客户端的请求,提高服务器的并发处理能力。此外,多线程还可以用于实现一些需要同时进行的操作,如同时下载多个文件或同时处理多个数据流等。因此,thread的功能可以使程序更加高效和灵活。

到此,以上就是小编对于的问题就介绍到这了,希望这2点解答对大家有用。

文章版权声明:除非注明,否则均为游侠云资讯原创文章,转载或复制请以超链接形式并注明出处。

目录[+]