
linux进程线程
IOT_SHUN
这个作者很懒,什么都没留下…
展开
-
linux进程、线程与cpu的亲和性(affinity)
最近的工作中对性能的要求比较高,下面简单做一下总结:一、什么是cpu亲和性(affinity) CPU的亲和性, 就是进程要在指定的 CPU 上尽量长时间地运行而不被迁移到其他处理器,也称为CPU关联性;再简单的点的描述就将制定的进程或线程绑定到相应的cpu上;在多核运行的机器上,每个CPU本身自己会有缓存,缓存着进程使用的信息,而进程可能会被OS调度到其他CPU上,如此,CPU cache命中...转载 2018-04-02 17:12:37 · 2189 阅读 · 1 评论 -
_exit和exit的区别
在linux的标准库函数中,有一套称作高级I/O的函数,我们熟知的printf 、fopen 、fread 、fwrite都在此列,他们也被称作缓冲I/O。其特征是对应每一个打开的文件,都存在一个缓冲区, 在内存中都有一片缓冲区,每次读文件会多读若干条记录,这样下次读文件时就可以直接从内存的缓存中取出,每次写文件时也仅仅是写入到内存的缓冲区,等待满足一定的条件(达到一定的数量,或者遇到特定字符,如...转载 2018-07-05 11:59:17 · 311 阅读 · 0 评论 -
线程分离状态的理解
在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死;在被其他线程回收之前,它的存储器资源(如栈)是不释放的。相反,一个分离的线程是不能被其他线程回收或杀死的,它的存储器资源在它终止时由系统自动释放。 线程的分离状态决定一个线程以什么样的方式来终止自己。在默认情况下线程是非分离状态的,这种情况下,原有...转载 2018-07-06 09:29:57 · 1392 阅读 · 0 评论 -
Linux进程栈和线程栈
参考资料:http://blog.youkuaiyun.com/xhhjin/article/details/7579145总结: 1、进程的栈大小是在进程执行的时刻才能指定的,即不是在编译的时候决定的,也不是在链接的时候决定的 2、进程的栈大小是随机确定的至少比线程栈要大,但是不到线程栈大小的2倍 3、线程栈大小是固定的,也就是ulimit -a 显示的值 查看线程栈大小:可以看到默认情况...转载 2018-07-06 12:38:41 · 348 阅读 · 0 评论 -
ps -aux命令
运行 ps aux 的到如下信息:root:# ps auxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDsmmsp 3521 0.0 0.7 6556 1616 ? Ss 20:40 0:00 sendma...转载 2018-07-13 09:27:17 · 506 阅读 · 0 评论 -
守护进程编写实例
守护进程如果一个进程永远都是以后台方式启动,并且不能受到Shell退出影响而退出,一个正统的做法是将其创建为守护进程。守护进程值得是系统长期运行的后台进程,类似Windows服务。守护进程信息通过ps –a无法查看到,需要用到–x参数,当使用这条命令的时候,往往还附上-j参数以查看作业控制信息,其中TPGID一栏为-1就是守护进程创建守护进程最关键的一步是调用setsid函数创建一个新的Sessi...转载 2018-07-13 09:31:00 · 598 阅读 · 0 评论 -
守护进程之单实例
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <signal.h>#include <unistd.h>#include <sys/types.h>#include <time.h>#include <sys/stat转载 2018-07-13 10:13:41 · 424 阅读 · 0 评论 -
文件锁和记录锁
http://blog.chinaunix.net/uid-23634108-id-2393492.html 下面介绍两种两种Linux下对文件加锁的两种方式一、文件锁思想:假设有一个文件A。创建一个加锁文件B,通过不同的进程互斥的访问此加锁文件B达到互斥的访问文件A的目的。源码如下#include "stdio.h"#include <time.h>#include <sys/...转载 2018-07-13 10:21:55 · 2468 阅读 · 0 评论 -
linux设置线程属性函数总结
1、初始化一个线程对象的属性int pthread_attr_init(pthread_attr_t *attr); 返回值:若是成功返回0,否则返回错误的编号 形 参: attr 指向一个线程属性的指针 说 明:Posix线程中的线程属性pthread_attr_t主要包括scope属性、detach属性、堆栈地址、堆栈大小、优先...转载 2018-07-13 18:42:51 · 1219 阅读 · 0 评论 -
fork与vfork的区别(注:vfork子进程不能return)
1.vfork保证子进程先运行,在它调用exec或exit之后父进程才可能被调度运行。如果在调用这两个函数之前子进程依赖于父进程的进一步动作,则会导致死锁。2.fork要拷贝父进程的进程环境;而vfork则不需要完全拷贝父进程的进程环境,在子进程没有调用exec和exit之前,子进程与父进程共享进程环境,相当于线程的概念,此时父进程阻塞等待。 为什么会有vfork呢?因为以前的fork当它创建一个...转载 2018-07-05 11:40:54 · 777 阅读 · 0 评论 -
linux父子进程文件共享
这种共享的方式使父、子进程对同一个文件使用了同一个文件偏移量。如果父、子进程写到同一个文件描述符,但有没有任何形式的同步,那么它们的输出就会相互混合。在fork之后处理文件描述符有两种常见的情况:(1)父进程等待子进程完成。在这种情况下,父进程无须对其描述符做任何处理。当子进程终止之后,它曾进行过读、写的人一个共享描述符的文件偏移量已经执行了相应的更新。(2)父、子进程各自执行不同的程序段。这种情...转载 2018-07-05 11:22:22 · 561 阅读 · 0 评论 -
用C++封装线程的互斥操作(linux)
学过操作系统的人,估计都知道互斥量是个何方神圣,我这里也就不再狗尾续貂再做解释了好,先看Linux下关于互斥量的一些API(所谓封装,说白了也就是封装这些API,让这些API更简单好用罢了)一、Linux下互斥量的使用1、定义一个互斥量pthread_mutex_t myMutex;2、初始化互斥量pthread_mutex_init( &myMutex, 0); //第2个参数是设置...转载 2018-06-11 17:03:13 · 265 阅读 · 0 评论 -
多线程中使用信号机制 pthread_sigmask()
在Linux的多线程中使用信号机制,与在进程中使用信号机制有着根本的区别,可以说是完全不同。在进程环境中,对信号的处理是,先注册信号处理函数,当信号异步发生时,调用处理函数来处理信号。它完全是异步的(我们完全不知到信号会在进程的那个执行点到来!)。然而信号处理函数的实现,有着许多的限制;比如有一些函数不能在信号处理函数中调用;再比如一些函数read、recv等调用时会被异步的信号给中断(inter...转载 2018-07-09 16:50:44 · 690 阅读 · 0 评论 -
进程通信--mmap内存共享
共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式。两个不同进程A、B共享内存的意思是,同一块物理内存被映射到进程A、B各自的进程地址空间。进程A可以即时看到进程B对共享内存中数据的更新,反之亦然。由于多个进程共享同一块内存区域,必然需要某种同步机制,互斥锁和信号量都可以。采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列...转载 2018-07-10 11:41:36 · 382 阅读 · 0 评论 -
linux之errno与线程安全
在linux或者unix环境中,errno是一个十分重要的部分。在调用的函数出现问题的时候,我们可以通过errno的值来确定出错的原因,这就会 涉及到一个问题,那就是如何保证errno在多线程或者进程中安全?我们希望在多线程或者进程中,每个线程或者进程都拥有自己独立和唯一的一个 errno,这样就能够保证不会有竞争条件的出现。一般而言,编译器会自动保证errno的安全性,但是为了妥善期间,我们希望...转载 2018-07-10 14:18:09 · 1716 阅读 · 0 评论 -
linux线程私有数据函数(pthread_key_create )
最近做的一个项目中,有这么个需求,系统中使用多线程技术,每个线程访问redis,希望每个线程来保存对redis的一份长链接,而不是每个请求建立一次链接。如果在线程启动之前建立好链接,然后传到线程的私有数据中,可以实现。可是系统的框架封装的实现,无法传入数据,这时可以采用线程的私有数据技术进行储存和获取。其中,有三个关键的系统API可供调用,分别是:1、pthread_key_create ,创建一...转载 2018-07-10 18:24:48 · 870 阅读 · 0 评论 -
Linux系统环境下关于多进程并发写同一个文件的讨论
原文地址:Linux系统环境下关于多进程并发写同一个文件的讨论 作者:CUKdd讨论关于并发环境下,多个进程对同一文件写入的问题,我们会涉及到文件共享的知识。在开始之前,我们先讨论一些有关文件共享的知识。1. 文件共享 Unix系统支持在不同进程间共享打开的文件。为此,我们先介绍一下内核用于所有I/O的数据结构。注意,下面的说明是概念性的,与特定的实现可能匹配,也可能不匹配。 内核使用三种数据...转载 2018-07-05 10:14:28 · 1888 阅读 · 0 评论 -
父子进程间文件共享
fork函数调用一次,返回两次。在新创建的过程中返回一次,返回值为0.在原来的进程中返回一次,返回值是新进程的pid。 通过fork函数创建的进程为新进程的父进程。即就是,通过fork创建的进程与原进程是父子关系。孤儿进程:当父进程结束以后,子进程未结束,子进程的父进程变为init。init这个进程是守护进程,它负责处理这些孤儿进程退出以后的一些状态。 僵死进程:(1)父进程未结束,子进程结束,父...转载 2018-07-05 10:52:27 · 833 阅读 · 0 评论 -
linux write函数为原子操作,多进程,多线程假如APPEND,写入不被打断
当一个文件被多个进程或者多个线程同时操作时,会不会出现内容交错的现象。例如一个进程向文件写入“AAAA” ,使用语句(write( fd, "AAAA", 4);),另一个进程向文件写入“BBBB”,语句为(write ( fd, "BBBB", 4);)。那么最终文件的内容会不会出现“AABBBBAA” 的情况呢?这就涉及到write函数是否是原子操作的问题了。如果write函数是原子操...转载 2018-07-05 11:16:41 · 3298 阅读 · 0 评论 -
linux文件锁之单例进程
锁的合并:若不同进程需要设置的两把锁作用范围部分或全部重叠,则先设置的读锁阻止后来设置的;先设置的写锁阻止后来的读/写锁.若同一进程先后要求设置的两把锁 (A,B)的作用范围部分或全部重叠,则在两把锁同类的情况下,它们的作用范围合并成一把锁(AUB);若两把锁不同类,则后设置的锁覆盖先设置的锁,先 设置的锁的范围变成(AUB) - B.锁的互斥,合并及覆盖与是建议性还是强制型锁无关.#inc...转载 2019-03-27 11:33:37 · 613 阅读 · 0 评论