您的位置 首页 > 科技

线程同步定义 为什么要线程同步?

线程同步定义

线程同步定义 为什么要线程同步?

为什么要线程同步?

为什么要线程同步?

线程同步:是多个线程同时访问同一资源,等待资源访问结束,浪费时间,效率低 线程异步:访问资源时在空闲等待时同时访问其他资源,实现多线程机制异步处理就是,你现在问我问题,我可以不回答你,等我用时间了再处理你这个问题.同步不就反之了,同步信息被立即处理 -- 直到信息处理完成才返回消息句柄;异步信息收到后将在后台处理一段时间 -- 而早在信息处理结束前就返回消息句柄区别同步和异步一个进程启动的多个不相干线程,它们相互之间关系为异步。同步必须执行到底之后才能执行其他操作,而异步可以任意操作同步的好处与弊端好处:解决了线程的安全问题。弊端:每次都有判断锁,降低了效率。但是在安全与效率之间,首先考虑的是安全。同步的前提一、多个线程执行的时候需要同步,如果是单线程则不需要同步。二、多个线程在执行的过程中是不是使用同一把锁。如果是,就是同步。否则不是同步。synchronzied(obj){ }同一个所synchronzied(new Object){ } 不是同一个锁对run()中需要同步的代码进行同步,如果有的代码不需要同步,则不要放到同步代码块中去。同步的表现形式有两种:1、同步代码块,被同步关键字封装的代码就是同步代码块;2、同步函数,被同步关键字修饰的函数就是同步函数。同步代码块的锁是可以是任意对象,在执行之前就好创建好一个锁对象。那么同步函数的锁在哪里?同步函数的锁就是调用该同步函数的对象,也就是this。如果同步函数被static修饰,那么该同步函数的锁就是这个类在堆内存中形成的类文件对象。这时候不一定有该类的对象,但一定有该类的字节码文件对象。

linux线程同步和进程同步的区别?

线程同步:多线程编程中,解决共享资源冲突的问题进程同步:多进程编程中,解决共享资源冲突的问题但是部分同学对线程同步和进程同步研究得不够深入,比如互斥锁和条件变量能不能同时用于线程同步和进程同步,本质上有什么区别。首先我们知道,linux下每个进程都有自己的独立进程空间,假设A进程和B进程各有一个互斥锁,这个锁放在进程的全局静态区,那么AB进程都是无法感知对方的互斥锁的。互斥锁和条件变量出自Posix.1线程标准,它们总是可以用来同步一个进程内的各个线程的。如果一个互斥锁或者条件变量存放在多个进程共享的某个内存区中,那么Posix还允许它用在这些进程间的同步。看到这里,是不是发现点了什么,线程同步和进程同步的本质区别在于锁放在哪,放在私有的进程空间还是放在多进程共享的空间,并且看锁是否具备进程共享的属性,

相关文章