- 博客(8)
- 收藏
- 关注
原创 【C语言】链表实现消费者生产者问题
这里的代码围绕一个生产者和一个消费者来分析,生产者生产一个产品,消费者才能使用一个产品,消费者和生产者是同步关系。一:不加同步互斥锁pthre#include<stdio.h> #include<stdlib.h>#include<pthread.h>typedef struct _Node{ struct _Node* next; int dat...
2018-04-30 13:46:01 662
原创 线程
线程概念在⼀一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”。一切进程至少都有一个执行线程。Linux下线程的特点Linux的线程是通过进程来模拟的,也就是说Linux里的线程本质上就是进程进程和线程的区别进程是资源竞争的基本单位线程是程序执行的最小单位线程共享进程数据,但也拥有⾃自⼰己的一部分数据: >* 线程ID >* 一组寄存器...
2018-04-24 12:22:25 7427
原创 进程间关系和守护进程
进程组/作业/会话的关系进程组:进程组是一个或多个进程的集合,每个进程组有一个唯一的进程组ID,每个进程组都可以有一个组长进程。组⻓长进程的标识是,其进程组ID等于其进程ID。 组⻓长进程可以创建一个进程组,创建该组中的进程,然后终止。只要在某个进程组中一个进程存在,则该进程组就存在,这与其组长进程是否终止无关。作业:Shell分前后台来控制的不是进程而是作业或者是进程组。一个前台作业可以由多个进...
2018-04-22 11:40:08 170
原创 死锁
什么是死锁?在一组进程发生死锁的情况下,这组死锁进程中的每一个进程,都在等待另一个死锁进程所占有的资源,或者说每个进程所等待的事件是该组中其他进程释放所占有的所有资源,但由于所有这些进程已都无法运行,因此他们谁也不能释放资源,致使没有任何一个进程可被唤醒。这样这组进程只能无限期的等待下去。由此可以给死锁做出如下定义:如果一组进程中的每一个进程都在等待仅由该组进程中的其他进程才能引发的事件,那么该组...
2018-04-21 09:52:22 235
原创 最小栈的两种实现方法
方法一:顺序栈最小栈入栈思路: 以9 5 7 2为例: 代码示例:Min_stack.h#include<stdio.h>#pragma once#define StackMAX 1000typedef int SeqListType;typedef struct Min_Struct{ SeqListType data[StackMAX]; size_t s...
2018-04-16 16:13:52 760
原创 【C语言】队列的基本操作实现
本次以顺序队列和链式队列的方法实现队列的基本操作基本操作:初始化,销毁,入队列,出队列,取队头元素顺序队列:listqueue.h#include<stdio.h>typedef char ListQueueType;#define MaxSize 1000typedef struct ListQueue{ ListQueueType data[MaxSize]; size_t siz...
2018-04-09 14:31:51 2189
原创 【C语言】对栈的基本操作
栈的基本操作:入栈,出栈,取栈顶元素栈的特点是先进后出,本次以顺序栈和链式栈的方法来写栈的基本操作。顺序栈stack.h#include<stdio.h>#pragma once#define StackMAX 1000typedef char SeqListType;typedef struct SeqListStack{ SeqListType data[StackMAX...
2018-04-08 18:15:37 411
原创 带头节点双向链表的基本操作
带头节点双向链表有两个指针分别指向前一个节点(prev)和后一个节点(next);用图可以表示为:DLinkList.h#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>typedef char DLinkType;typedef struct DLinkNode { DLinkType data; struct DLinkN...
2018-04-04 11:33:19 814
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人