`

linux 线程挂起恢复的简单示例

 
阅读更多
转自
http://blog.csdn.net/honghuzhilangzixin/article/details/7908236


参考:

http://blog.csdn.net/chennxi/article/details/6234529《Linux下线程的挂起和恢复》

写了个demo:
#include <unistd.h>
#include <pthread.h>

static pthread_mutex_t mutex;
static pthread_cond_t cond;
static int flag = 0;

void srpthread_init()
{
	pthread_mutex_init(&mutex,NULL);
	pthread_cond_init(&cond,NULL);
}

void srpthread_suspend()
{
	pthread_mutex_lock(&mutex);
	flag--;
	pthread_mutex_unlock(&mutex);
}


void srpthread_resume()
{
	pthread_mutex_lock(&mutex);
	flag++;
	pthread_cond_signal(&cond);
	pthread_mutex_unlock(&mutex);
}

void *thread_run()
{
	while(1)
	{
		pthread_mutex_lock(&mutex);
		while(flag<=0)
		{
			pthread_cond_wait(&cond,&mutex);
		}

		pthread_mutex_unlock(&mutex);

		//actual work
		printf("i am running!\n");
	}

}

int main(int argc,char *argv[])
{
	char ch;
	pthread_t p1;
	srpthread_init();
	pthread_create(&p1,NULL,(void *)thread_run,NULL);

	while(1)
	{
		scanf("%c",&ch);
		switch(ch)
		{
			case 's':
				srpthread_suspend();
				break;
			case 'r':
				srpthread_resume();
				break;
			default:
				break;
		}
	}
#if 0
	printf("1111\n");
	srpthread_resume();
	printf("2222\n");
	sleep(3);
	printf("3333\n");
	srpthread_suspend();
	printf("4444\n");
#endif
	return 1;
}



编译命令:
gcc file.c -o file lpthread
分享到:
评论

相关推荐

    Linux系统故障诊断与排除--James Kirkland

    8.2 Linux线程 174 8.3 确定进程挂起 180 8.4 进程核心 186 8.4.1 信号 187 8.4.2 限制 189 8.4.3 核心文件 191 8.5 小结 192 第9章 备份与恢复 194 9.1 备份介质 194 9.1.1 磁带 195 9.1.2 ...

    Linux中使用fork创建子进程详解及示例代码 | 嵌入式Linux应用开发篇 – 02

    1. 进程 1.1. 什么是进程 当可执行文件开始运行之后,就变为了系统中的一个进程,一个程序(可执行文件)运行起来之后可以创建多个进程执行,...S:可中断的睡眠状态(因为等待某种事件的发生而被挂起); D:不可中断

    vc++ 应用源码包_1

    Linux内核完全注释附 MFC+消息循环贴图---金山毒霸界面 自绘控件实现。 MFCDemo DirectUI移植到MFC中实现。 MFCHtml 调用脚本 MFC使用COM加载WMI服务,另类获取系统服务详细 大家都知道,现在流行的检测硬件软件视...

    vc++ 应用源码包_2

    Linux内核完全注释附 MFC+消息循环贴图---金山毒霸界面 自绘控件实现。 MFCDemo DirectUI移植到MFC中实现。 MFCHtml 调用脚本 MFC使用COM加载WMI服务,另类获取系统服务详细 大家都知道,现在流行的检测硬件软件视...

    vc++ 应用源码包_6

    Linux内核完全注释附 MFC+消息循环贴图---金山毒霸界面 自绘控件实现。 MFCDemo DirectUI移植到MFC中实现。 MFCHtml 调用脚本 MFC使用COM加载WMI服务,另类获取系统服务详细 大家都知道,现在流行的检测硬件软件视...

    vc++ 应用源码包_5

    Linux内核完全注释附 MFC+消息循环贴图---金山毒霸界面 自绘控件实现。 MFCDemo DirectUI移植到MFC中实现。 MFCHtml 调用脚本 MFC使用COM加载WMI服务,另类获取系统服务详细 大家都知道,现在流行的检测硬件软件视...

    vc++ 应用源码包_3

    Linux内核完全注释附 MFC+消息循环贴图---金山毒霸界面 自绘控件实现。 MFCDemo DirectUI移植到MFC中实现。 MFCHtml 调用脚本 MFC使用COM加载WMI服务,另类获取系统服务详细 大家都知道,现在流行的检测硬件软件视...

    vc++ 开发实例源码包

    Linux内核完全注释附 如题,我没看。 MFC+消息循环贴图---金山毒霸界面 自绘控件实现。 MFCDemo DirectUI移植到MFC中实现。 MFCHtml 调用脚本 如题。 MFC使用COM加载WMI服务,另类获取系统服务详细 大家都知道,...

    操作系统(内存管理)

    文将对 Linux™ 程序员可以使用的内存管理技术进行概述,虽然关注的重点是 C 语言,但同样也适用于其他语言。文中将为您提供如何管理内存的细节,然后将进一步展示如何手工管理内存,如何使用引用计数或者内存池来半...

Global site tag (gtag.js) - Google Analytics