操作系统
大学生毕设
分享知识,增长见识,需要安装包,私发我邮箱
展开
-
C++11多线程的原子操作
我们知道当一个程序创建多线程运行时,多个线程之间会互相抢占。所以即使此时运行最简单的a++;也可能会发生线程x的a++还没运行完,另一个线程y可能就抢占运行了,所以此时x线程a++就发生了错误。下面就进行不同情况下的运行情况和时间消耗对比。一,不加限制运行代码:#include<iostream>#include<thread>using namespace std;const int tcount = 4;int sum = 0;void mythr原创 2020-12-16 10:29:57 · 487 阅读 · 0 评论 -
学会如何进行线程的调度
背景:当一个计算机是多道程序设计系统时,会不断产生进程和线程之间的切换,此时就要需要一种方法来从就绪队列中挑选一个进程/线程作为CPU将要运行的下一次进程/线程。调度程序:挑选进程/线程的内核函数内核运行调度程序的条件(满足一条即可):一个进程从运行状态切换到等待状态 一个进程被终结了不可抢占调度程序必须等待事件结束可以抢占调度程序在中断被响应后执行 当前的进程从运行切换到就绪,或者从一个进程从等待切换到就绪 当前运行的进程可以被换出...原创 2020-10-24 09:22:49 · 877 阅读 · 0 评论 -
C++11多线程中关于unique_lock的介绍
一:unique_lock取代lock_guard unique_lock是个类模板,工作中,一般使用lock_guard;lock_guard取代了mutex的lock()和unlock() unique_lock比lock_guard灵活很多,虽然效率上差一点,内存占用多一点二:unique_lock的第二个参数std::adopt_lock:表示这个互斥量已经被lock了(你必须把互斥量提前lock了,否则会报异常) std::adopt_lock标记的...原创 2020-10-23 20:19:03 · 819 阅读 · 0 评论 -
怎样用C++11创建多线程,以及当共享数据时关于互斥量和死锁的问题
使用容器的方法创建喝管理多线程把thresd的对象放到容器中,看起来像thread对象数组,使用这种方法对于我们一次创建大量线程并对其进行管理很方便互斥量 一,互斥量(mutex)的基本概念 互斥量是个类对象,理解成一把锁,多个线程尝试用lock()成员函数来加锁这把锁头,只有一个线程能锁定成功(成功的标志是lock()函数返回)死锁问题:举例: 比如我有两把锁(死锁这个问题,是由至少两个锁头也就是两个互斥锁才能产生):假设现在有金锁和银锁 两个线程a和原创 2020-10-22 16:52:15 · 349 阅读 · 0 评论 -
C++11创建简单线程
概念:主线程从main()开始执行,那么我们自己创建的线程,也需要从一个函数开始运行(初始函数),一旦这个函数与运行完毕,就代表我们这个线程运行结束。整个进程是否执行完毕的标志是 主线程是否执行完,如果主线程执行完了,那么就代表整个进程执行完了一般情况下,如果其它子线程还没有执行完毕,那么这些子线程也会被操作系统强行终止一般情况下,我们得到一个结论;如果想要保持子线程(自己用代码创建的线程)的原创 2020-10-21 18:08:10 · 356 阅读 · 0 评论 -
用Linux怎样编写C/C++代码
由于在编写进程时,一些进程的函数需要在Linux环境下才能运行,因此需要掌握基本的编译方法。第一步:安装C/C++编译器gcc、g++安装gcc编译器命令:yum -y install gcc安装g++编译器命令:yum -y install gcc-c++编写C语言程序:首先编写一个简单的Chello.c输入指令:vi Chello.c然后输入想要编写的程序:输入i进行编写;退出先按Esc,然后输入:wq!保存退出运行程序:输入下面两条指令,先将Ch原创 2020-10-15 15:58:23 · 1422 阅读 · 0 评论 -
浅谈操作系统中——进程 && 线程
目录一,进程1,进程描述 1.1进程定义 1.2 进程的组成 1.3 进程的特点 1.4 进程控制结构2,进程管理 2.1 进程的生命期管理2.2 进程状态变化模型 2.3 进程挂起模型二,线程1,线程的定义2,线程的实现3,上下文切换原创 2020-10-15 14:28:25 · 264 阅读 · 0 评论