linux学习
这个一个积极上进的ID
这个作者很懒,什么都没留下…
展开
-
记几个常用的linux下操作命令
为了方便记忆,首先对linux下的操作命令进行分类:简单系统管理类、文件与目录管理类,进程管理类与作业调度类。简单系统管理类1.关机 : shutdown 后缀加 -r 关机重启 后缀加 -c 可取消pending(即将发生的)的关机事件2.who : 查看当前登录的所有用户信息3. id : 显示当前用户名和组名4. su : 用于用户间的跳转 (需要注意的是当root用户跳到...原创 2019-03-04 22:22:39 · 147 阅读 · 0 评论 -
记linux下对网络IPC:套接字socket的学习
套接字描述符所谓套接字描述符是用于 网络进程间的通信。套接字是通信端点的抽象,正如进程使用文件描述符访问文件,应用程序用套接字描述符访问套接字。为调用一个套接字,调用socket。int socket(int domain,int type,int protocol)返回值:成功返回文件描述符,失败返回-1;参数:domain(域):确定通信的特性,包括地址格式,每种域都有自己的地址格...原创 2019-03-11 23:15:19 · 157 阅读 · 0 评论 -
记linux下对条件量的学习(一)
信号量,互斥量,条件量是线程间保证线程同步的三种方式,其中信号量和互斥量是通过堵塞的方式来实现资源的竞争,试想一下,如果有多个消费者线程同时在等待一个生产者生产产品时,如果只用到互斥量,那么每个消费者线程在访问产品这个临界资源的时候都需要对互斥量metex进行先上锁,读取并且判断有无产品,再解锁地操作。但这是在浪费时间和资源,而且这种繁忙查询的效率非常低。同样,在每次检查之间让线程短暂地进入睡眠,...原创 2019-03-07 23:25:39 · 496 阅读 · 0 评论 -
记linux下对线程的学习(二)--对基本线程类的封装
在了解了线程的接口函数后,同共享内存一样,接下来将对线程类进行封装。直接上代码:BaseThread.h#ifndef BASETHREAD_H_#define BASETHREAD_H_#include <pthread.h>#include <stdio.h>#include <unistd.h>class CBaseThread{p...原创 2019-03-07 18:28:09 · 269 阅读 · 0 评论 -
记linux下对线程的学习(一)
现在开始对线程的学习首先是百度上的线程的概念解释线程,有时被称为轻量进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源...原创 2019-03-07 17:26:43 · 224 阅读 · 0 评论 -
记linux下共享内存的学习(二)之对共享内存的封装
在学习了共享内存函数的使用方法以及使用信号量来确保不同进程间对共享内存操作时的互斥性后,这一次开始学习将共享内存封装成c++类的形式,方便以后的项目过程中可以直接使用它。下面展示的是共享内存的头文件#ifndef _SHM_FIFO_H_#define _SHM_FIFO_H_#include <iostream>#include <sys/types.h>#...原创 2019-03-07 11:28:48 · 931 阅读 · 3 评论 -
记linux下对线程池的学习及使用(二)--对线程池类的封装
phreadpool.h#ifndef _PTHREADPOOL_H#define _PTHREADPOOL_H#include &amp;lt;list&amp;gt;#include &amp;lt;iostream&amp;gt;#include&amp;lt;unistd.h&amp;gt;#include &quot;PThreadCond.h&quot;#原创 2019-03-09 17:30:21 · 428 阅读 · 1 评论 -
记linux下对线程池的学习及使用(一)
什么是线程池线程池就是一个拥有许多线程的一个容器,通常线程池中的线程可通过条件量设置为休眠状态,待到条件改变即线程池发现了新的可执行任务的时候,会随机唤醒一个等待线程从任务队列中提取任务并且执行。为什么需要线程池如果没有线程池,可以假想在一个服务端在要处理的事件的时候,大概可分为三步,分别是1.创建线程 2.线程执行具体任务 3.销毁线程。如果处理的具体任务是一个很简单的任务,那么第一步和...原创 2019-03-09 14:00:41 · 293 阅读 · 0 评论 -
记linux下对条件量及互斥量的学习(二) --对条件量和互斥量的类封装
在了解了这两个线程间方式的API函数后,现在对它们进行封装,下面是封装源码pthread_mutex.h#ifndef PTHREADMUTEX_H#define PTHREADMUTEX_H#include <stdio.h>#include <pthread.h>class CPThreadMutex{public: CPThreadMutex()...原创 2019-03-09 10:48:08 · 187 阅读 · 0 评论 -
记linux下进程间通信方式之信号量--对信号量的学习
对信号量的学习前面已经学习了共享内存的几个api函数,在两个进程间通信时,一个进程进行读操作,一个进程进行写操作,这种情况下,可以保证原子性,但是当有同一时刻有多个进程对该共享内存进行写操作时,就可能导致数据的丢失,前面写的函数就不适用了,这个时候,信号量就可以派上用场。信号量的概念信号量作为进程间通信的一种方式,实际上并不能作为数据交换的载体,而是一种类似锁地机制,几个进程间都可以通过获取...原创 2019-03-05 23:20:45 · 251 阅读 · 0 评论 -
记linux下进程间通信方式之共享内存(一)
共享内存是进程间通信中效率极高的一种方案,以下是我对共享内存的探索学习过程。这个是共享内存的具象化,进程A和进程B两个不相关的进程都可以通过特殊的连接方式共同访问使用同一块内存。共享内存中涉及到的如下几个函数1. int shmget(key_t key,size_t size,int shmflg);作用:用来创建共享内存返回值:共享内存段的id,供shmat使用形参:key :...原创 2019-03-05 19:23:57 · 219 阅读 · 0 评论 -
记linux下IO复用--IO复用的学习
1.区分堵塞、非堵塞在一个IO操作过程中,以read为例,会涉及到两个过程:1.等待数据准备好;2.将数据从内核拷贝到进程中这两个阶段是否发生阻塞,将产生不同的效果。堵塞IO:进程在请求read阻塞io的数据时,操作需要彻底完成后才返回到用户空间非堵塞IO:进程在步骤1不堵塞,如果数据没准备好,read(io操作)函数会立即返回一个状态值反馈给进程,所以对于非阻塞io,可以用一个w...原创 2019-03-21 21:19:27 · 686 阅读 · 0 评论