zoukankan      html  css  js  c++  java
  • 关于操作系统的一些问题

    1.线程是什么

    线程(Thread)是进程当中的一条执行流程,是进程的一个实体。

    同一个进程内多个线程之间可以共享该进程的地址空间、堆空间、全局变量、打开的文件等资源,但每个线程都有独立一套的寄存器和栈,这样可以确保线程的控制流是相对独立的。
    参考:https://mp.weixin.qq.com/s/YXl6WZVzRKCfxzerJWyfrg

    2.生产者-消费者模型

    生产者负责生产产品,消费者负责消费产品。
    过程: 生产者生产产品放入仓库,消费者查看仓库是否有产品,如果有就消费;如果没有,就等待生产者生产。生产者生产好之后,发出信号告知消费者,消费者等待结束,消费产品。

    3.消息队列

    生产者和消费者之间需要通信的媒介,就是消息队列。
    生存者发送消息,消息队列存下消息,再传送给消费者。
    注意: 读取消息队列时,如果为空,应该阻塞
    写消息队列时,如果已满,也应该阻塞

    4.锁的概念

    每个线程在对资源操作之前,先加上一个锁,防止别的线程来操作这些资源。操作完成之后,再解锁。
    这里的锁也就是操作系统书上所说的信号量(Semaphores)
    锁有两个原子操作,wait(S)、signal(S),也称为P、V操作
    wait操作是等待资源,signal操作是释放资源。
    实现消息队列需要锁

    5.条件变量概念

    条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。
    条件变量是线程的另外一种同步机制,这些同步对象为线程提供了会合的场所

    6.C++ 关于多线程的操作

    C++ 中mutex是互斥锁
    用到了线程,编译线程时要加上-pthread

    作者:inss!w!
    版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 相关阅读:
    19_多态及引用类型的转化
    18_接口以及基本实现
    17_super关键字 超,基,父
    Static 关键字
    17_抽象类
    17_继承
    数 函数类 Math类
    ArrayList类 Arrays类 注释
    我的第一篇博客
    hdu 3478 Catch--二分图判断
  • 原文地址:https://www.cnblogs.com/Hfolsvh/p/15354806.html
Copyright © 2011-2022 走看看