zoukankan      html  css  js  c++  java
  • 线程的同步与实现

    线程同步的方式:

    1)临界区:通过对多线程的串行化来访问公共资源或者一段代码,速度快,适合控制数据访问

    2)互斥量:只有用户互斥对象的线程才可以访问公共资源。互斥不仅仅能够实现统一应用程序的公共资源安全共享,还可以实现不同应用的公共资源的安全共享。

    3)信号量:它允许同一时刻多个线程访问同一资源,但是需要控制同一时刻访问该资源的数量。

    4)事件(信号):用来通知线程一些事情已经发生,从而启动后继任务的其实保持多线程同步,也可以实现多线程优先级的比较操作。

    线程的实现方式

    根据操作系统内核是否对线程课感知,可以将线程分为:用户线程与内核线程。

    内核线程建立和销毁都是由操作系统来负责。操作系统在参考各个进程内是否有运行的或者就绪队列的线程,决定是否停止对该线程的调度。

    用户线程,用户线程指不需要内核支持而在用户程序中实现的线程,其不依赖于操作系统核心,用户进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。用户线程是不能被操作系统所感知的。

    用户线程的优点:

    1)可以在不支持线程的操作系统中实现

    2)创建和销毁线程,线程切换的代价=线程管理的代价<<内核线程

    3)允许每个进程定制自己的调度算法,线程管理比较灵活

    4)线程能够利用的表空间与堆栈空间比内核级线程多。

    用户线程的缺点:

    1)同一个进程只能同时一个线程在运行,如果有一个线程使用了系统调用而阻塞,那么整个进程都会被挂起。

    2)页面失效也会引起整个进程被挂起。

  • 相关阅读:
    MySQL length函数
    MySQL between ... and ...
    MySQL Group By使用
    MySQL 聚合函数/分组函数
    MySQL where与like
    MySQL order by与distinct
    城市网络
    滑动窗口
    合并回文子串(NC13230)
    NC50439
  • 原文地址:https://www.cnblogs.com/topass123/p/12751930.html
Copyright © 2011-2022 走看看