欢迎访问服务百科信息网!
首页 >科技 >线程同步
线程同步

线程同步

(线程同步)
线程同步,就是协同步调,按预定的先后次序进行运行。即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作, 其他线程才能对该内存地址进行操作,而其他线程又处于等待状态。如:你说完,我再说。“同”字从字面上容易理解为一起动作其实不是,“同”字应是指协同、协助、互相配合。如进程、线程同步,可理解为进程或线程A和B一块配合,A执行到一定程度时要依靠B的某个结果,于是停下来,示意B运行;B依言执行,再将结果给A;A再继续操作。所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回,同时其它线程也不能调用这个方法。实现线程同步的方法有很多,临界区对象就是其中一种。
线程同步资料
  • 外文名:thread synchronization
  • 应用:物理
  • 类型:理论
  • 举例说明

    在Java里面,通过synchronized进行同步的保证。例如:

    在C++ 11里面,通过std::mutex的加锁和解锁来保证。例如:

    方式和机制

    临界区、互斥量、事件、信号量四种方式

    临界区(Critical Section)、互斥量(Mutex)、信号量(Semaphore)、事件(Event)的区别

    1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。在任意时刻只允许一个线程对共享资源进行访问,如果有多个线程试图访问公共资源,那么在有一个线程进入后,其他试图访问公共资源的线程将被挂起,并一直等到进入临界区的线程离开,临界区在被释放后,其他线程才可以抢占。

    2、互斥量:采用互斥对象机制。只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,所以能保证公共资源不会同时被多个线程访问。互斥不仅能实现同一应用程序的公共资源安全共享,还能实现不同应用程序的公共资源安全共享

    3、信号量:它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目

    4、事 件:通过通知操作的方式来保持线程的同步,还可以方便实现对多个线程的优先级比较的操作

  • 上一篇百科:DataInputStream
  • 下一篇百科:Java开发工具