linux
earlene_wyl
这个作者很懒,什么都没留下…
展开
-
ubuntu18.04root登录图形界面
默认安装Ubuntu18.04都是不允许以root用户进行登录的,想要以root用户进行登录需要进行一些操作,主要是以下几个步骤:第一步:以普通用户登录系统,创建root用户的密码在终端输入命令:sudo passwd root然后输入你要设置的密码,这样就完成了设置root用户密码的步骤第二步:修改文件/usr/share/lightdm/lightdm.conf.d/50-un...转载 2019-03-25 22:58:26 · 275 阅读 · 0 评论 -
C++ 并发问题
1.pthread_cond_wait的虚假唤醒什么是虚假唤醒?简单说就是wait这个函数返回了,但是它等的那个条件并不满足。为什么会这样? 有两种原因这个条件从来就没有满足过,wiat函数的返回不是因为别的线程调用signal或者broadcast把你唤醒,而是因为wait函数被信号中断。(虚假唤醒的一个可能性是条件变量的等待被信号中断。) pthread 的条件变量等...原创 2019-10-12 00:00:06 · 282 阅读 · 0 评论 -
信号的捕获和处理
信号的捕获和处理信号(signal)是在特定事件发生时由操作系统向进程发送的消息。它一种软件中断,是进程间唯一的异步通信方式。信号有很多,常见的有:SIGINT:在键盘按下<Ctrl+C>组合键后产生,默认动作为终止进程SIGQUIT:在键盘按下<Ctrl+\>组合键后产生,默认动作为终止进程SIGKILL:无条件终止进程。本信号不能被忽略、处理和阻塞...原创 2019-09-17 23:58:50 · 1726 阅读 · 0 评论 -
线程与信号
https://www.cnblogs.com/coding-my-life/p/4782529.html每个线程都有自己独立的signal mask,但所有线程共享进程的signal action类UNIX信号以前是专为进程设计的,它比线程的出现早了很多年。当线程模型出现后,专家们试图也在线程上实现信号,这导致了一个问题:如果要在线程模型中保持原来在进程中信号语意不变,是相当困难的...原创 2019-10-12 00:00:29 · 441 阅读 · 1 评论 -
单例模式
目录单例模式:1)定义2)实现方法:3)优点和应用场景:c++实现懒汉模式:1)muduo C++网络库的线程安全单例模式:使用方法:2)单线程版:3)各种多线程版:a)上锁(线程安全但效率不高)b)双检查锁(DCL)(会导致未初始化的内存访问)c)使用内存栅栏(线程安全)饿汉模式:单例模式:1)定义简单定义:保证这个类在程序里面只...原创 2019-08-26 19:07:46 · 168 阅读 · 0 评论 -
两个线程同时对int a=0进行a++一百次最后的结果可能为多少?
实际上访问在2-200之间,这个2是极端情况下才会出现,实际测试时几乎不可能出现2这种情况,但是理论中还是可以证明可以为2的,接下来开始分析:首先我们知道的一点是现在的cpu几乎都是多核的(单核多核没区别了),所以我们就以多核cpu为例证明结果为2的极端情况,首先我们得知道a++这种操作并不是原子性的,实际上它的操作是首先从内存中取出数据放在cpu中进行计算,然后再将计算好的结果返回到内存中的,...转载 2019-07-21 00:15:36 · 2056 阅读 · 1 评论 -
select/poll/epoll
select,poll,epoll都是实现IO多路复用的一种系统调用,I/O多路复用就是通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。select它可以监听可读,可写,和异常这3种事情,而它是通过一个位图数组来告诉内核需要监听哪些文件描述符,但是它没有把文件描述符和要监听的事情所绑定,所以我们需要提供3个位图数组,来...原创 2019-10-12 00:22:52 · 155 阅读 · 0 评论 -
读者-写者问题
问题描述:允许多个进程同时对数据进行读操作,读的时候不能写,写的时候不能读,更不能另一个也在写。1)读者优先:只要有读者,就让它去读。分析问题:我们要实现:1.写-写互斥2.写-读互斥3.多个读是允许的。对于问题1,可以通过一个互斥信号量wsem实现。对于问题2,也可以通过一个互斥信号量实现,并且我们注意到写和读是两个函数,所以可以共用wsem实现。这样我们的代码是:...原创 2019-07-17 23:42:40 · 324 阅读 · 0 评论 -
一篇文章完全搞清楚 scoket read/write 返回码、阻塞与非阻塞、异常处理 等让你头疼已久的问题
看这两篇文章对read和write就理解了:https://www.cnblogs.com/junneyang/p/6126635.html https://www.cnblogs.com/xiehongfeng100/p/4619451.html浅谈TCP/IP...转载 2019-07-20 17:27:22 · 683 阅读 · 0 评论 -
生产者-消费者
问题描述:使用一个缓冲区来保存物品,只有缓冲区没有满,生产者才可以放入物品;只有缓冲区不为空,消费者才可以拿走物品。并且访问缓存区要互斥使用信号量实现生产者-消费者问题因为缓冲区属于临界资源,所以同一时间只能有一个进程在访问这个缓冲区,这就需要一个信号量mutex 来控制对缓冲区的互斥访问。而生产者还需要先知道缓存区还有没有空位置,这就需要一个信号量empty,当 em...原创 2019-07-17 23:47:24 · 413 阅读 · 0 评论 -
进程调度
操作系统常见的进程调度算法调度算法是指:根据系统的资源分配策略所规定的资源分配算法。常见的进程调度算法有: 1.先来先去服务 2.时间片轮转法 3.多级反馈队列算法 4.最短进程优先 5.最短剩余时间优先 6.最高响应比优先 7.多级反馈队列调度算法一、先来先去服务 先来先去服务调度算法是一种最简单的调度算法,也称为先进先出或严格排队方案。当...转载 2019-07-16 21:29:17 · 922 阅读 · 0 评论 -
多进程和多线程
关于线程:首先关于多线程多进程,看一张图:基本上把线程,进程区别说清楚了提到线程,就不得不提线程同步的问题,我专门归纳了一篇文章:线程同步常用方式与区别线程2个性质,线程安全:概念比较直观。一般说来,一个函数被称为线程安全的,当且仅当被多个并发线程反复调用时,它会一直产生正确的结果。可重入:概念基本没有比较正式的完整解释,但是它比线程安全要求更严格。根据经验,所谓“重入”,...转载 2019-07-18 21:40:36 · 106 阅读 · 0 评论 -
进程内核栈、用户栈
1.进程的堆栈 内核在创建进程的时候,在创建task_struct的同事,会为进程创建相应的堆栈。每个进程会有两个栈,一个用户栈,存在于用户空间,一个内核栈,存在于内核空间。当进程在用户空间运行时,cpu堆栈指针寄存器里面的内容是用户堆栈地址,使用用户栈;当进程在内核空间时,cpu堆栈指针寄存器里面的内容是内核栈空间地址,使用内核栈。2.进程用户栈和内核栈的切换 当进程因...转载 2019-07-14 17:16:36 · 259 阅读 · 0 评论 -
使程序在Linux下后台运行 (关掉终端继续让程序运行的方法)
其实就是 1) 刚创建的时候 在最后加个 & e.g gedit somefile & 2) 假如已经在前台了 ctrl+z 暂停 jobs 看编号 bg 编号 转为后台 3) 看文章后面的https://blog.csdn.net/zxh2075/article/details/5...转载 2019-03-27 15:10:37 · 2917 阅读 · 0 评论 -
pthread_cond_wait的 虚假唤醒
pthread_cond_wait的虚假唤醒什么是虚假唤醒?简单说就是wait这个函数返回了,但是它等的那个条件并不满足。为什么会这样? 有两种原因这个条件从来就没有满足过,wiat函数的返回不是因为别的线程调用signal或者broadcast把你唤醒,而是因为wait函数被信号中断。(虚假唤醒的一个可能性是条件变量的等待被信号中断。) pthread 的条件变量等待 pth...原创 2019-10-12 00:00:14 · 919 阅读 · 0 评论