- 博客(9)
- 资源 (39)
- 收藏
- 关注
原创 linux系统编程:线程同步-信号量(semaphore)
线程同步-信号量(semaphore) 生产者与消费者问题再思考 在实际生活中,只要有商品,消费者就可以消费,这没问题。但生产者的生产并不是无限的,例如,仓库是有限的,原材料是有限的,生产指标受消费指标限制等等。为了进一步,解决好生产者与消费者问题,引入信号量进机制。 信号量 信号量(semaphore)是互斥量的升级版:互斥量的状态为0或1,而信号量可以为n。也就是说,使用互斥量时,最多允许一个线程进入关键区,而信号量允许多个,具体值是信号量当前的内部值。 相关函数
2015-07-26 18:00:46 3861 1
原创 linux系统编程:线程同步-条件变量(cond)
线程同步-条件变量 生产者与消费者问题 再引入条件变量之前,我们先看下生产者和消费者问题:生产者不断地生产产品,同时消费者不断地在消费产品。 这个问题的同步在于两处:第一,消费者之间需要同步:同一件产品只可由一人消费。第二,当无产品可消费时,消费者需等待生产者生产后,才可继续消费,这又是一个同步问题。详细了解:生产者消费者问题。 条件变量 条件变量是利用线程间共享的全局变量进行同步的一种机制,并且条件变量总是和互斥锁结合在一起。 相关函数
2015-07-26 11:29:10 1804
原创 linux系统编程:线程同步-读写锁(rwlock)
线程同步-读写锁(rwlock)读写锁读写锁是互斥量的细化:显然,只有对全局资然进行写入操作时,才需要同步;在对全局资然进行读取操作时,是不需要锁的。pthread_rwlock_t pthread_rwlock_init pthread_rwlock_destroy pthread_rwlock_rdlock pthread_rwlock_wrlock pthread_rwlock_tryrdl
2015-07-25 23:16:53 2239
原创 linux系统编程:线程同步-互斥量(mutex)
线程同步-互斥量(mutex) 线程同步 多个线程同时访问共享数据时可能会冲突,于是需要实现线程同步。 一个线程冲突的示例
2015-07-25 17:49:11 1618
原创 linux系统编程:线程原语
线程原语 线程概念 线程(thread),有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。更多详细解释看百度百科:线程。 在Linux shell下通过命令 $ ps -Lf pid 查看指定pid号下的所有线程。 线程之间的共享与非共享 这里的线程是指同一进程下的线程。 共享: 1.文件描述符表 2.每种信号的处理方式 3.当前工作目录 4.用户ID和组ID
2015-07-17 19:25:30 2395
原创 linux系统编程:进程原语
进程原语 1. 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。 2. 进程环境 在libc中定义的全局变量environ指向环境变量表,environ没有包含在任何头文件中,所以在使用时要用extern声明。用以下代码可以查看当前进程的所有环境变量的信息。
2015-07-15 19:35:48 3512 3
原创 linux系统编程:进程间通信-mmap
进程间通信-mmap #include <sys/mman.h> void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset); int munmap(void *addr, size_t length); mmap本质是把内存与硬盘上的文件同步。某块内存中的内容会同步到硬盘文件上,即把文件映射到内存。故通过对同一文件的读写达到进程间的通信。 参数解释: addr:指定对哪儿块内存实行映射。NULL表示
2015-07-15 19:23:38 1877
原创 linux系统编程:进程间通信-fifo
进程间通信-fifo 进程间通信的另一种方式是fifo。fifo是另一种管道:有名管道。从名字可以看出,它也是队列。 使用fifo通信前,得先创建fifo
2015-07-15 18:23:55 1561
原创 linux系统编程:进程间通信-pipe
进程间通信-pipe 进程间通信 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信(IPC,InterProcess Communication)。 pipe 管道(pipe)就是一项基本的进程间通信的方法。
2015-07-15 17:13:10 1479
外排序-多路归并
2014-08-23
哈夫曼树&哈弗曼编码
2014-07-12
一元多项式的加法、减法、乘法
2014-06-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人