- 博客(15)
- 资源 (10)
- 问答 (1)
- 收藏
- 关注
转载 Linux多线程编程小结
Linux多线程编程小结 前一段时间因为开题的事情一直耽搁了我搞Linux的进度,搞的我之前学的东西都遗忘了,很烦躁的说,现在抽个时间把之前所学的做个小节。文章内容主要总结于《Linux程序设计第3版》。1.Linux进程与线程 Linux进程创建一个新线程时,线程将拥有自己的栈(因为线程有自己的局部变量),但与它的创建者共享全局变量、文件描述符、信号句柄和
2015-03-29 23:31:22 340
转载 eventfd以及epoll原理分析
这两天公司代码中用到了epoll。然后在跟同事闲扯的过程中发现了Linux中有eventfd。两者虽然名字看起来差不多,但是相关性倒是不多。为了弄明白这两个东西到底在内核上是怎么实现的,这两天将内核这两个部分的相关代码看了下,也终于明白了这两个东西的实现机制。后续几篇博客我尽量将这两个东西的工作原理阐述清楚,但是自己的语言表达能力比较差,也只能是尽量了。今天这篇博客首先是介绍两者的
2015-03-29 23:10:58 1277
转载 信号
最近有个child process block main process的问题,希望能够用信号跳出block,所以搜索到了一个比较好的资料,在这里mark!来源:http://www.crazyhadoop.com/2011/04/04/%E5%85%AB%E4%BF%A1%E5%8F%B7/===========================================
2015-03-29 21:19:28 506
转载 exec 函数
(1)exec函数说明fork函数是用于创建一个子进程,该子进程几乎是父进程的副本,而有时我们希望子进程去执行另外的程序,exec函数族就提供了一个在进程中启动另一个程序执行的方法。它可以根据指定的文件名或目录名找到可执行文件,并用它来取代原调用进程的数据段、代码段和堆栈段,在执行完之后,原调用进程的内容除了进程号外,其他全部被新程序的内容替换了。另外,这里的可执行文件既可以是二进制文件,也可
2015-03-29 16:09:35 457
转载 守护进程的单实例实现
守护进程的单实例实现为了正常工作,守护进程应该实现为单实例的,也就是在任一时刻只运行该守护进程的一个副本,因为这个守护进程要排它的访问一个设备。这里需要用到文件锁的机制,如果守护进程创建一个文件,并且在整个文件上加上一把锁,那就只允许创建一把这样的写锁,在此之后如果试图再创建一把这样的写锁就将失败,以此向续守护进程副本指明已经有一个副本正在运行。而这个锁文件通常都放在/var/run目
2015-03-28 21:24:04 479
转载 内核信号的实现
信号的概念大家不陌生。经常使用的kill命令,可以先运行的进程发送信号,运行进程在收到信号后,做出相应的处理。在用户态程序中关于信号的编程,主要有如下的特点1、程序可以给不同的信号安装特定的handler程序,这个handler有一定的格式,由用户程序提供2、应用程序可以配置,阻塞一些信号,使得程序可以不响应这些信号3、信号一般有默认的handler处理流程,应用程序如果不主动设置ha
2015-03-26 23:07:37 668
转载 pthread_cond_signal与pthread_cond_wait详解
//pthread_cond_signal 只发信号,内部不会解锁,在Linux线程中,有两个队列,分别是cond_wait队列和mutex_lock队列, cond_signal只是让线程从cond_wait队列移到mutex_lock队列,而不用返回到用户空间,不会有性能的损耗。(pthread_cond_signal unlock后pthread_cond_wait才能上锁)
2015-03-24 22:56:48 1125
转载 可重入函数与非线程安全函数一览
深入理解可重入与线程安全在多线程编程和信号处理过程中,经常会遇到可重入(reentrance)与线程安全(thread-safe)。很多人纠结于reentrance和thread-safe两个概念理解纠缠不清。我想救我对reentrance和thread-safe的理解作个总结一、可重入(reentrance)首先来看下APUE中,列出的可重入函数:
2015-03-23 21:44:36 3846
转载 信号量 互斥锁 条件变量的区别(讲的很好,值得收藏)
信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在semtake的时候,就阻塞在哪里)。而互斥锁是用在多线程多任务互斥的,一个线程占用了某一个资源,那么别的线程就无法访问,直到这个线程unlock,其他的线程才开始可以利用这个资源。比如对全局变量的访问,有时要加锁,操作完了,在解锁。有的时候锁和信号量会同时使用的”也就是说,信号量不
2015-03-16 23:13:54 624
转载 多线程同步条件变量
最近看《UNIX环境高级编程》多线程同步,看到他举例说条件变量pthread_cond_t怎么用,愣是没有看懂,只好在网上找了份代码,跑了跑,才弄明白 [cpp] view plaincopy#include #include #include pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;/*初始化
2015-03-16 23:11:20 443
转载 Linux的SOCKET编程详解
Linux的SOCKET编程详解1. 网络中进程之间如何通信进 程通信的概念最初来源于单机系统。由于每个进程都在自己的地址范围内运行,为保证两个相互通信的进程之间既互不干扰又协调一致工作,操作系统为进程通信提供了相应设施,如UNIX BSD有:管道(pipe)、命名管道(named pipe)软中断信号(signal)UNIX
2015-03-04 11:02:17 433
转载 ioctl函数
ioctl函数 本函数影响由fd参数引用的一个打开的文件。 #includeint ioctl( int fd, int request, .../* void *arg */ );返回0:成功 -1:出错 第三个参数总是一个指针,但指针的类型依赖于request参数。我们可以把和网络相关的请求划分为6类:套接口操作文件操作接口操作ARP高
2015-03-04 09:59:56 659
转载 C语言中的static 详细分析
google了近三页的关于C语言中static的内容,发现可用的信息很少,要么长篇大论不知所云要么在关键之处几个字略过,对于想挖掘底层原理的初学者来说参考性不是很大。所以,我这篇博文博采众家之长,把互联网上的资料整合归类,并亲手编写程序验证之。 C语言代码是以文件为单位来组织的,在一个源程序的所有源文件中,一个外部变量(注意不是局部变量)或者函数只能在一个源程序中定义一次,如果
2015-03-03 20:44:08 363
转载 emacs配置详解及C/C++IDE全功能配置演示(附配置文件)
我的emacs插件下载地址:http://pan.baidu.com/share/link?shareid=4196458904&uk=3708780105说明: 1.为什么使用emacs和vim而不使用IDE? 大牛只用这两种工具,我等弱渣纯属装比。 2.为什么弃vim而使用emacs ?
2015-03-02 22:49:06 1278
转载 linux socket网络编程:fcntl select(多个客户端连接服务器端情形)
一、引言 在实际情况中,人们往往遇到多个客户端连接服务器端的情况。由于之前介绍的函数如connect,recv,send等都是阻塞性函数,若资源没有充分准备好,则调用该函数的进程将进入睡眠状态,这样就无法处理I/O多路复用的情况了。 本文给出两种I/O多路复用的方法:fcntl(),select()。可以看到,由于Linux中把socket当作一种特殊的文件描述符,这给用户的处
2015-03-02 14:06:30 634
C++析构函数是怎么出来的?
2015-12-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人