E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
C-Linux环境编程
《unix高级
环境编程
》线程——线程同步
当多个控制线程共享相同的内存时,需要确保每个线程看到一致的数据视图。当多个线程对可修改变量进行访问时,就会出现变量的一致性问题,这时就会涉及到线程同步的问题。互斥量 可以通过使用pthread的互斥接口保护数据,确保同一时间只有一个线程访问数据。互斥量本质上就是一把锁,在访问共享资源前对互斥量进行加锁,在访问完成后释放互斥量上的锁。对互斥量进行加锁以后,任何其他试图再次对互斥量加锁的
chenhanzhun
·
2014-11-12 21:00
线程同步
读写锁
互斥量
条件变量
Linux
环境编程
1.__sync_fetch_and_add和__sync_bool_compare_and_swapgcc从4.1.2提供了__sync_*系列的built-in函数,用于提供加减和逻辑运算的原子操作。其声明如下:type__sync_fetch_and_add(type*ptr,typevalue,...)type__sync_fetch_and_sub(type*ptr,typevalue,
·
2014-11-11 19:00
[置顶] 【Linux
环境编程
】获取网卡的实时网速
在windows下面,我们可以看到360或者是qq安全卫士的“安全球”,上面显示实时的网速情况。那么在linux里面如何获取网卡的实时网速?其实原理很简单,读取需要获取网速的网卡在某段时间dT内流量的变化dL,那么实时网速就出来了,Speed=dL/dt。linux在ifaddrs.h中提供了函数:/*Createalinkedlistof`structifaddrs'structures,one
ieczw
·
2014-11-11 15:00
网速测量
《unix高级
环境编程
》线程——线程终止
pthread_exit 函数和 pthread_join函数 在进程中,若调用了函数exit,_exit,或_Exit时,则该进程会终止,同样,若进程中的线程调用这三个函数时也会使线程所在的进程终止。那么要是只是退出线程,而不终止线程所在的进程有什么办法?下面是在单线程模式下退出线程的三种方式(不会终止线程所在的进程):线程只是从启动例程中返回,返回值是线程的退出码;线程被同一进程的其他线
chenhanzhun
·
2014-11-10 18:00
函数
函数
函数
函数
pthread_detach
pthread_cancel
pthread_exit
pthread_join
《unix高级
环境编程
》线程——线程基本概述
线程的基本概念 线程是一个进程中的控制和执行单元,也是CPU调度和分派的基本单元。在传统的UNIX系统中,一个进程只有一个线程(主线程),即在同一时刻只能做一件事情。在现代的UNIX系统中,一个进程可以包含多个线程,每个线程处理各自独立的任务,称之为“并发(concurrency)”,但并不等同于“并行(parallelism)”。真正意义上的并行只存在于多处理器系统中,而并发也可以存在于单
chenhanzhun
·
2014-11-10 10:00
线程
线程创建
线程ID
《unix高级
环境编程
》信号——abort、system和sleep函数
abort函数abort函数的功能是使异常终止,此函数将SIGABRT信号发送给调用进程,让进程捕捉SIGABRT信号目的是在进程终止之前由其执行所需的清理操作。默认情况是终止调用进程。该函数实现如下: #include #include #include #include voidMabort(void) { sigset_tmask; structsigactionaction; /* *
chenhanzhun
·
2014-11-09 21:00
信号
system函数
Sleep函数
abort函数
《unix高级
环境编程
》信号——sigsuspend 函数
sigsuspend函数 更改进程的信号屏蔽字可以阻塞所选择的信号,或解除对它们的阻塞,使用这种技术可以保护不希望由信号中断的代码临界区。如果希望对一个信号解除阻塞,然后pause等待以前被阻塞的信号发生,就是把“解除信号屏蔽”和“挂起等待信号”这两步能合并成一个原子操作。sigsuspend函数能够实现该功能,即包含了pause的挂起等待功能,同时临时解除对某个信号的屏蔽。以下是该函数的原
chenhanzhun
·
2014-11-09 20:00
sigsuspend函数
《unix高级
环境编程
》信号——信号集
信号集 信号集是表示多个信号的数据类型,这里的信号集数据类型是sigset_t,包含五个处理信号集的函数:/*信号集*/ #include intsigemptyset(sigset_t*set);//初始化由set所指向的信号集,清空信号集; intsigfillset(sigset_t*set);//初始化由set所指向的信号集,使其包括所有信号; intsigaddset(sig
chenhanzhun
·
2014-11-09 10:00
Unix高级环境编程
信号集
sigpending函数
sigprocmask函数
stream
在《UNIX高级
环境编程
》中提到流的概念,觉得有地模糊,因此有必要做一个梳理。1、标准I/O流 系统调用I/O的操作是围绕文件描述符进行的,而标准I/O库的操作是围绕stream进行的。
Q1302182594
·
2014-11-09 09:00
《unix高级
环境编程
》信号——信号发送与捕获
kill函数和raise函数 kill函数是将信号发送给进程或进程组,raise函数是将信号发送给自身,他们定义及说明如下所示:/*信号发送与捕获*/ /* *函数功能:将信号发送给进程或进程组; *返回值:若成功则返回0,若出错则返回-1; *函数原型: */ #include intkill(pid_tpid,intsigno); /*说明: *signo是信号类型; *pid有以下
chenhanzhun
·
2014-11-08 22:00
pause函数
alarm函数
kill函数
raise函数
信号发送
《unix高级
环境编程
》信号——信号基本概述
信号基本概念 信号本质是在软件层次上对中断机制的一种模拟,即软件中断;在原理上,一个进程收到一个信号或处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,进程也不知道信号到底什么时候到达。信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的进程有哪些事情发生了。 信号事件的发生有两个来源:硬件来源(比如按下了键盘一些
chenhanzhun
·
2014-11-08 20:00
信号
Unix高级环境编程
signal函数
《unix高级
环境编程
》进程关系——控制终端、作业控制和守护进程
首先总结下进程、进程组与会话之间的关系。进程属于一个进程组,进程组属于一个会话,会话可能有或没有控制终端。以下是一些基本概念: 僵死进程:一个子进程已经终止,但是其父进程没有对其进行善后处理(获取终止子进程有关信息,释放它仍占有的资源),则该子进程就成为僵死进程。消灭僵尸进程的唯一方法是终止其父进程。 孤儿进程:子进程的父进程已经终止,但是该进程依然存在,则称该子进程为孤儿进程
chenhanzhun
·
2014-11-08 16:00
守护进程
作业控制
控制终端
Unix高级环境编程
进程关系
《unix高级
环境编程
》进程关系——会话
会话 会话是一个或多个进程组的集合,通常是由shell的管道线将几个进程编成一组;会话首进程是新建会话时,会话中的唯一进程,其进程ID等于会话ID; 下面是新建会话和获取会话首进程的进程组ID的函数:/*会话*/ /* *函数功能:建立一个新会话; *返回值:若成功则返回进程组ID,若出错则返回-1; *函数原型: */ #include pid_tsetsid(void); /
chenhanzhun
·
2014-11-08 11:00
会话
Unix高级环境编程
进程关系
《unix高级
环境编程
》进程关系——进程组
在UNIX系统中,每个进程除了自己的进程ID之外,还属于一个进程组。进程组是一个进程或多个进程的集合,进程组本身也有属于自己的进程组ID,进程组属于一个会话,fork()并不改变进程组ID。进程组组长: 进程ID与进程组ID相等的进程。组长可以改变子进程的进程组ID,使其转移到另一进程组。组长进程可以在所在的进程组创建进程,然后终止,从进程组创建开始到其中最后一个进程离开为止的时间区
chenhanzhun
·
2014-11-08 11:00
进程组
Unix高级环境编程
进程关系
《unix高级
环境编程
》进程控制——进程时间
进程时间 进程时间有墙上时钟时间、用户CPU时间和系统CPU时间。任一进程都可以调用times函数以获得它自己以及终止子进程的上述值。/*进程时间*/ /* *函数功能:获取进程的时间:墙上时钟时间、用户CPU时间和系统CPU时间; *返回值:若成功则返回流逝的墙上时钟时间(单位:时钟滴答数),若出错则返回-1; *函数原型: */ #include clock_ttimes(struct
chenhanzhun
·
2014-11-07 20:00
Unix高级环境编程
times函数
进程时间
《unix高级
环境编程
》进程控制——system函数
system函数system 函数能够执行函数中参数的命令,实现如下:/*system函数*/ #include intsystem(constchar*cmdstring);首先我们看下该函数的具体实现:/*system函数的实现*/ #include"apue.h" #include intsystem(constchar*cmdstring) { pid_tpid; intstatus;
chenhanzhun
·
2014-11-07 19:00
进程控制
system函数
Unix高级环境编程
《unix高级
环境编程
》进程控制——解释器文件
解释器文件解释器文件是文本文件,而解析器是可执行的二进制文件。解析器是由解析器文件的第一行指定的,其格式如下:#!pathname[optional-argument] //pathename是解释器的绝对路径; //optional-argument是传递给解析器的参数内核调用exec函数的进程实际执行的并不是该解释器文件,而是该解释器文件的第一行中pathname所指定的解释器。注意以下区别
chenhanzhun
·
2014-11-07 16:00
进程控制
解释器文件
Unix高级环境编程
《unix高级
环境编程
》进程控制——exec序列函数
exec替换进程映像 在进程的创建上UNIX采用了一个独特的方法,它将进程创建与加载一个新进程映象分离,这样可以方便对两种操作进行管理。当创建了一个进程之后,通常可以用exec系列的函数将子进程替换成新的进程映象。当然,exec系列的函数也可以将当前进程替换掉。exec序列函数 fork函数创建一个子进程时,几乎复制了父进程的全部内容。exec序列函数可以在一个在进程中启动另一个程序的
chenhanzhun
·
2014-11-07 11:00
Unix高级环境编程
exec函数
《unix高级
环境编程
》进程控制——进程等待
wait函数和waitpid函数 当一个进程正常或异常终止时,内核会向其父进程发送SIGCHLD信号。父进程可以为这个信号提供一个信号处理程序,也可以选择忽略,系统对这种信号默认是忽略。当进程调用 wait或waitpid函数可能会发生以下的情况:注意:如果进程是由于接收到 SIGCHLD信号而调用wait函数,则可期望wait立即返回;但是如果是在任意时刻调用wait,则进程可能会发生阻塞
chenhanzhun
·
2014-11-06 20:00
函数
函数
函数
wait
waitpid
进程控制
Unix高级环境编程
waitid
《unix高级
环境编程
》进程控制——创建进程
UNIX中进程创建有两个函数分别是fork和vfork函数,下面对这两个函数进行分析。fork函数 在UNIX系统中,一个现有进程可以调用fork函数创建一个新进程。调用fork函数的进程称为父进程,由fork创建的新进程被称为子进程(childprocess)。fork函数被调用一次但返回两次,两次返回的唯一区别是子进程中返回0值而父进程中返回子进程ID。首先看下fork函数的原型
chenhanzhun
·
2014-11-05 22:00
函数
函数
fork
进程控制
vfork
创建进程
Unix高级环境编程
《unix高级
环境编程
》进程控制——进程ID
进程ID 在unix系统中,每个进程都有一个非负整型表示的唯一进程ID。当一个进程终止时,进程ID可以重新被其他进程使用,为了防止误判,unix系统实现延迟重用算法,即新建的进程ID不同于最近终止进程所使用的ID。 进程ID为0的是调度进程,也称为交换进程,是内核的一部分,不执行磁盘上的程序,因此也称为系统进程。进程ID为1的是init进程,负责在自举内核后启动一个unix系统,ini
chenhanzhun
·
2014-11-05 19:00
进程控制
进程ID
Unix高级环境编程
《unix高级
环境编程
》进程环境——进程资源限制
每个进程都有一组资源限制,其中一些可以使用getrlimit和setrlimit函数进行查询和修改。进程的资源限制是在系统初始化时由进程0建立的,然后由每个后续进程继承,每种实现都可以用自己的方法对各种限制做出调整。 getrlimit和setrlimit函数/*进程资源限制*/ /*查询和修改进程资源*/ /* *函数功能:查询或修改进程资源; *返回值:若成功则返回0,若出错则
chenhanzhun
·
2014-11-05 17:00
Unix高级环境编程
getrlimit函数
setrlimit函数
进程资源限制
《unix高级
环境编程
》进程环境——异常处理
在C语言中,当嵌套函数调用出错时,可以采用非局部跳转函数setjmp和longjmp,利用这两个函数可以把程序控制流进行有效转移,这两个函数相结合可以在栈上跳过若干调用帧,返回到当前函数调用路径上的某一个函数中。setjmp和longjmp函数/*setjmp和longjmp函数*/ /* *函数功能:当某个嵌套函数出错时,可实现程序控制流跳转; *函数原型: *#include *i
chenhanzhun
·
2014-11-05 15:00
Unix高级环境编程
进程环境
longjmp函数
setjmp函数
《unix高级
环境编程
》进程环境——进程终止
当内核执行C程序时(使用一个exec函数执行),在调用mian函数前先调用一个特殊的启动例程。可执行程序文件将此启动例程指定为程序的起始地址。下面是C程序启动和终止的流程,由图中可以知道,进程的终止根据不同的函数调用是不一样的,其中_exit和_Exit函数是终止进程直接进入内核,exit函数则先执行一些清理,然后在进入内核。内核是程序执行的方法只有调用exec函数。虚线框里面表示用户进程
chenhanzhun
·
2014-11-04 21:00
进程终止
Unix高级环境编程
exit函数
《unix高级
环境编程
》系统数据文件和信息——时间和日期
unix内核的基本服务时间是计算自国际标准时间公元1970年1月1日00:00:00以来经过的秒数,以时间类型time_t表示。以下根据时间的不同显示进行记录各种时间函数。当前时间time/*time函数.*/ /*** *函数功能:返回当前时间和日历。 *返回值:若成功则返回时间值,若出错则返回-1。 *函数原型: ***/ #include time_ttime(time_t*calp
chenhanzhun
·
2014-11-04 19:00
系统时间
Unix高级环境编程
《unix高级
环境编程
》系统数据文件和信息——组文件
在系统文件中,跟口令文件类似,存在这组文件,基本结构跟口令文件相同。组文件结构信息/*Thegroupstructure.*/ structgroup { char*gr_name;/*Groupname.*/ char*gr_passwd;/*Password.*/ gid_tgr_gid;/*GroupID.*/ char**gr_mem;/*Memberlist.*/ };getgrgid和
chenhanzhun
·
2014-11-04 17:00
Unix高级环境编程
组文件
《unix高级
环境编程
》系统数据文件和信息——口令文件
口令文件的结构/*Thepasswdstructure.*/ structpasswd { char*pw_name;/*Username.*/ char*pw_passwd;/*Password.*/ uid_tpw_uid;/*UserID.*/ gid_tpw_gid;/*GroupID.*/ char*pw_gecos;/*Realname.*/ char*pw_dir;/*Homedir
chenhanzhun
·
2014-11-04 16:00
口令文件
Unix高级环境编程
[置顶] 【linux
环境编程
】 ARP编程
(注:部分摘自”LinuxC编程一站式学习“)以太网(RFC894)帧格式图一以太网数据包类型其中的源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的。用ifconfig命令看一下,“HWaddr00:15:F2:14:9E:3F”部分就是硬件地址。协议字段有三种值,分别对应IP、ARP、RARP。帧末尾是CRC校验码。以太网帧中的数据长度规定最小46字节,最
ieczw
·
2014-11-04 10:00
linux
linux
网络编程
arp编程
《unix高级
环境编程
》标准I/O——流操作
标准I/O的文件操作是与流相关联的,所以我们要了解流的操作,本节记录的是流的基本操作,包括:流的打开、关闭、读和写操作。/********* *流操作 * *1、打开流 * *函数功能:打开一个标准I/O流; *返回值:若成功返回文件指针,若出错返回NULL; *函数原型: *#include * *FILE*fopen(constchar*pathname,constchar*type)
chenhanzhun
·
2014-11-04 09:00
流操作
标准IO
《unix高级
环境编程
》标准I/O——FILE对象
前面介绍的《文件I/O》都是针对文件描述符进行操作的,并且是非缓冲区方式的。本节记录的标准I/O的操作是在流进行的,当用标准I/O打开或创建一个文件时,已使一个流与一个文件相关联。 标准I/O文件的流可用与单字节或多字节(宽)字符集。流的定向决定所读、写的字符是单字节还是多字节。流最初被创建时,并没有定向,若在未定向的流上使用一个多字节I/O函数,则将该流的定向设置为宽定向,若是使用
chenhanzhun
·
2014-11-03 22:00
流
缓冲区
标准IO
Unix高级环境编程
《unix高级
环境编程
》文件和目录——目录操作
目录基本操作目录的基本操作包括打开目录opendir、读取目录readdir、关闭目录closedir等操作,如下说明:/******************** *目录操作: *1、打开目录opendir * *函数功能:打开一个目录; *返回值:若成功返回一个目录指针,若出错则返回NULL指针; *函数原型: *#include *#include *DIR*opendir(constchar
chenhanzhun
·
2014-11-03 20:00
目录操作
Unix编程
《unix高级
环境编程
》文件和目录——文件时间
/********** *文件时间 *根据stat的结构可以知道,文件有三种时间: *st_atime最后访问时间,即最后访问文件的时间 *st_mtime最后修改时间,即修改文件内容的时间 *st_ctime最后更改时间,即更改inode节点的时间 *****/ /********** *utime函数 *函数功能:更改文件访问时间和文件修改时间; *返回值:若成功则返回0,若出错则返回-1;
chenhanzhun
·
2014-11-03 19:00
文件时间
Unix高级环境编程
《unix高级
环境编程
》文件和目录——文件操作
文件长度 在前面介绍的stat结构体中,有关文件长度的成员有三个:文件长度st_size、文件I/O块长度st_blksize、所分配实际512字节块数量。其中结构成员st_size表示以字节为单位的文件长度。此字段只对普通文件、目录文件和符号链接有效。对于普通文件,其长度可为0,读取这种文件时,将得到文件结束(end-of-file)指示。对于目录文件,文件通常为一个整数(16或512)的倍
chenhanzhun
·
2014-11-03 15:00
remove
文件操作
link
Unix编程
unlink
《unix高级
环境编程
》文件和目录——文件权限
umask函数当创建新文件是可以通过umask函数指定文件的访问权限。以下是文件权限值对应的数字:读R——数字4;写W——数字2;执行X——数字1;/************************** *函数功能:为进程设置文件模式创建屏蔽字,并返回以前的值; *函数原型: * *mode_tumask(mode_tcmask); *参数说明 *cmask是前面介绍的文件权限的9个值的若干个按位
chenhanzhun
·
2014-11-03 09:00
chown
chmod
文件权限
Unix编程
umask函数
《unix高级
环境编程
》文件和目录——文件属性
本节是记录文件的基本属性,下面给出描述文件属性的三个基本函数:stat,lstat,fstat函数。/*********************** *函数功能: *stat函数返回与pathname命名文件的相关信息结构; *fstat函数获取已在描述符filedes上打开的文件信息; *lstat函数获取符号连接的相关信息; * *返回值:若成功则返回0,若出错则返回-1; *函数原型: */
chenhanzhun
·
2014-11-02 19:00
文件属性
Unix编程
《unix高级
环境编程
》文件I/O
前言: 文件I/O可分为两类:第一类是非缓冲式的文件操作;该类型一般由系统调用,主要函数有open,write,read,lseek,close;第二类是缓冲式文件操作;该类型由标准输入输出提供操作;本文记录的是第一类文件I/O。操作函数:文件描述符 内核通过文件描述符打开的文件,它是一个非负整数。通常,文件描述符0对应标准输入;文件描述符1对应标准输出;文件描述符2对应标准出错。依照
chenhanzhun
·
2014-10-22 22:00
文件IO
Unix高级环境编程
《unix高级
环境编程
》关于apue.h和源码编译问题
《unix高级
环境编程
》这本书的源码下载连接http://www.apuebook.com/,这里有几个版本,根据需要下载,我的是第二版的源码。
chenhanzhun
·
2014-10-22 14:00
Unix编程
Unix高级环境编程
apue头文件
Ctags插件的安装和使用
功能 ctags的功能, 只要在unix/linux
环境编程
过的人都知道它的历害! 我在这也作个小 小介绍吧ndow=0: 对浏览代码非常的方便, 可以在函数, 变量之间跳来跳去等等.
wzzxsb
·
2014-08-12 17:20
Web
Ctags插件的安装和使用
下载地址:http://ctags.sourceforge.net/(1).帮助手册查看:helpusr_29(2).功能ctags的功能,只要在unix/linux
环境编程
过的人都知道它的历害!
wzzxsb
·
2014-08-12 17:20
web
other
Linux 程序设计学习笔记----动手编写makefile文件
BefroeBeginning.之前定了暑假的plan,关于Linux的书籍现在在看的是ALP和Linux高级程序设计(杨宗德)第三版.在计划中的是Linux高级
环境编程
.现在开始关于Linux程序设计的第一篇学习笔记
hu1020935219
·
2014-07-23 20:00
关于Linux文件访问权限与设置用户id位
阅读更多最近在学习《Unix高级
环境编程
》这边书,之前对Unix中的文件访问还有和文件访问相关的设置用户id(set_user_ID)位以及设置组id(set-group-ID)位一直没有弄清楚,今天跟他人讨论一个问题
ChadLiu
·
2014-06-26 21:00
文件权限访问控制
设置用户ID
st_uid
access
open
关于Linux文件访问权限与设置用户id位
阅读更多最近在学习《Unix高级
环境编程
》这边书,之前对Unix中的文件访问还有和文件访问相关的设置用户id(set_user_ID)位以及设置组id(set-group-ID)位一直没有弄清楚,今天跟他人讨论一个问题
ChadLiu
·
2014-06-26 21:00
文件权限访问控制
设置用户ID
st_uid
access
open
关于Linux文件访问权限与设置用户id位
最近在学习《Unix 高级
环境编程
》这边书,之前对Unix中的文件访问还有和文件访问相关的设置用户id(set_user_ID)位以及设置组
ChadLiu
·
2014-06-26 21:00
Access
open
设置用户ID
文件权限访问控制
st_uid
共享内存
from:unix高级
环境编程
unix/linux中共享内存是最高效的ipc方式。
jollyjumper
·
2014-06-21 17:00
Linux
环境编程
之共享内存区(二):Posix共享内存区
现在将共享内存区的概念扩展到将无亲缘关系进程间共享的内存区包括在内。Posix提供了两种在无亲缘关系进程间共享内存区的方法:1、内存映射文件:由open函数打开,由mmap函数把得到的描述符映射到当前进程地址空间中的一个文件。(上一节就是这种技术)2、共享内存区对象:由shm_open打开一个Posix名字(也许是在文件系统中的一个路径名),所返回的描述符由mmap函数映射到当前进程的地址空间。(
To_Be_IT_1
·
2014-06-08 15:00
ipc
Posix共享内存区
Linux
环境编程
之共享内存区(一):共享内存区简介
共享内存区是可用IPC形式中最快的。一旦内存区映射到共享它的进程的地址空间,进程间数据的传递就不再涉及内核。然而往该共享内存区存放信息或从中取走信息的进程间通常需要某种形式的同步。不再涉及内核是指:进程不再通过执行任何进入内核的系统调用来彼此传递数据。内核必须建立允许各个进程共享该内存区的内存映射关系,然后一直管理内存区。默认情况下通过fork派生的子进程并不与其父进程共享内存区。mmap函数把一
To_Be_IT_1
·
2014-06-08 13:00
ipc
共享内存区
Linux
环境编程
之同步(四):Posix信号量
信号量是一种用于提供不同进程间或一个给定进程的不同线程间同步手段的原语。有三种类型:Posix有名信号量,使用PosixIPC名字标识;Posix基于内存的信号量,存放在共享内存区中;SystemV信号量,在内核中维护。这三种信号量都可用于进程间或线程间的同步。图1由两个进程使用的一个二值信号量图2由两个进程使用的一个Posix有名二值信号量图3由一个进程内的两个线程共享的基于内存的信号量一个进程
To_Be_IT_1
·
2014-06-07 10:00
同步
POSIX信号量
Linux
环境编程
之同步(三):读写锁
概述互斥锁把试图进入我们称之为临界区的所有其他线程都阻塞住。该临界区通常涉及对由这些线程共享一个或多个数据的访问或更新。读写锁在获取读写锁用于读某个数据和获取读写锁用于写直接作区别。读写锁的分配规则如下:1、只要没有线程持有某个给定的读写锁用于写,那么任意数目的线程可以持有该读写锁用于读。2、仅当没有线程持有某个给定的读写锁用于读或用于写时,才能分配该读写锁用于写。即只要没有线程在修改某个给定的数
To_Be_IT_1
·
2014-06-06 15:00
同步
读写锁
Linux
环境编程
之同步(二):条件变量
互斥锁用于上锁,条件变量则用于等待。条件变量是类型为pthread_cond_t的变量。一般使用如下函数:#include intpthread_cond_wait(pthread_cond_t*cptr,pthread_mutex_t*mptr); intpthread_cond_signal(pthread_cond_t*cptr);每个条件变量总是有一个互斥锁与之关联。调用pthread_c
To_Be_IT_1
·
2014-06-06 14:00
同步
条件变量
Linux
环境编程
之同步(一):互斥锁
同步的内容在《UNP2》里把它看作了进程间通信,我觉得其实同步只是进程间通信的一种协作方式一种协作的手段,不能称之为进程间通信的一种形式,所以标题用了“同步”,而没有用IPC进程间通信。互斥锁是同步的基本组成部分,它们总是用来同步一个进程内的各个线程的。如果互斥锁或条件变量存放在多个进程间共享的某个内存区,那么Posix还允许它用于这些进程间的同步。互斥锁用于保护临界区以保证任何时刻只有一个线程在
To_Be_IT_1
·
2014-06-06 10:00
同步
互斥锁
上一页
5
6
7
8
9
10
11
12
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他