linux线程创建、挂起、恢复、退出
来源:互联网 发布:中国足球巅峰时期知乎 编辑:程序博客网 时间:2024/06/05 05:44
/* * Copyright (c)2014 * All rights reserved * http://blog.csdn.net/ezhou_liukai */#include <stdio.h>#include <pthread.h>#include <unistd.h>pthread_mutex_t g_mutex;int g_nflag1, g_nflag2;static pthread_cond_t g_cond1 = PTHREAD_COND_INITIALIZER;static pthread_cond_t g_cond2 = PTHREAD_COND_INITIALIZER;void suspend(int n){ pthread_mutex_lock(&g_mutex); switch (n) { case 1: g_nflag1--; break; case 2: g_nflag2--; break; default: break; } pthread_mutex_unlock(&g_mutex);}void resume(int n){ pthread_mutex_lock(&g_mutex); switch (n) { case 1: g_nflag1++; pthread_cond_signal(&g_cond1); break; case 2: g_nflag2++; pthread_cond_signal(&g_cond2); break; default: break; } pthread_mutex_unlock(&g_mutex);}void *thr_fn1(void *arg){ for (int i = 0; i< 10; i++) { sleep(1); pthread_mutex_lock(&g_mutex); while (g_nflag1 <= 0) { pthread_cond_wait(&g_cond1, &g_mutex); } pthread_mutex_unlock(&g_mutex); printf("Thread_ID: %u , i = %d\n", (unsigned int)pthread_self(), i); }}void *thr_fn2(void *arg){ for (int i = 0; i < 10; i++) { sleep(1); pthread_mutex_lock(&g_mutex); while (g_nflag2 <= 0) { pthread_cond_wait(&g_cond2, &g_mutex); } pthread_mutex_unlock(&g_mutex); printf("Thread_ID: %u, i = %d\n", (unsigned int)pthread_self(), i); }}int main(void){ pthread_mutex_init(&g_mutex, NULL); g_nflag1 = 1; g_nflag2 = 1; pthread_t tid1,tid2; pthread_setconcurrency(3); pthread_create(&tid1, NULL, &thr_fn1, NULL); pthread_create(&tid2, NULL, &thr_fn2, NULL); sleep(2.1); suspend(2); sleep(5.1); resume(2); suspend(1); pthread_cancel(tid1); pthread_join(tid1, NULL); pthread_join(tid2, NULL); return 1;}
0 0
- linux线程创建、挂起、恢复、退出
- MFC-创建,挂起,恢复线程
- linux线程的挂起与恢复
- Linux下线程的挂起和恢复
- linux 线程挂起恢复的简单示例
- linux 线程挂起恢复的简单示例
- Linux下线程的挂起和恢复
- Linux下线程的挂起和恢复
- 多线程编程(2): 线程的创建、启动、挂起和退出
- MFC之AfxbeginThread 线程 创建、挂起、释放、结束、退出
- 线程挂起与恢复
- 线程恢复和挂起
- 线程挂起与恢复
- 挂起和恢复线程
- [代码]创建,挂起,恢复,结束线程的demo
- linux中线程的挂起与恢复(进程暂停)
- linux中线程的挂起与恢复(进程暂停)
- linux中线程的挂起与恢复(进程暂停)
- Android 中Bitmap 在ImageView中OOM问题
- OOP编程php实例
- 优化Android应用内存的若干方法
- java中static变量和方法的总结
- C++ 字符串操作经验集
- linux线程创建、挂起、恢复、退出
- GitHub删除respository仓库
- POJ 1006 Biorhythms 解题报告(中国剩余定理)
- log4j的配置
- 黑马程序员_异常
- POJ 2709 painter
- linux读者写者问题
- 一句话介绍Android的各种Drawable
- 终于开通了啊!