线程执行N次后,进程执行M次,如此循环S次
2015-03-13 12:28
176 查看
#include <stdio.h> #include <pthread.h> #define LOOP_S 10 #define PRT_M 2 #define PRT_N 1 int g_flag = 0; pthread_mutex_t g_lock = PTHREAD_MUTEX_INITIALIZER; pthread_cond_t g_cond = PTHREAD_COND_INITIALIZER; void *thread_func(void *arg) { int i, j; for (i = 0; i < LOOP_S; ++i) { pthread_mutex_lock(&g_lock); while (g_flag > PRT_N - 1 || g_flag < 0) pthread_cond_wait(&g_cond, &g_lock); for (j = 0; j < PRT_N; ++j) { printf("%c", 'N'); ++g_flag; } pthread_mutex_unlock(&g_lock); pthread_cond_signal(&g_cond); } } int main() { pthread_t pid; pthread_create(&pid, NULL, thread_func, NULL); int i, j; for (i = 0; i < LOOP_S; ++i) { pthread_mutex_lock(&g_lock); while (0 <= g_flag && g_flag < PRT_N) pthread_cond_wait(&g_cond, &g_lock); for (j = 0; j < PRT_M; ++j) printf("%c", 'M'); g_flag = 0; pthread_mutex_unlock(&g_lock); pthread_cond_signal(&g_cond); } printf("\n"); pthread_join(pid, NULL); }
相关文章推荐
- 子线程循环10次,主线程执行100次,紧接着子线程执行10次,再执行主线程 如此往复50次。子线程循环的时候主线程不能打扰,相同的是主线程执行循环的时候子线程也不能打扰
- spring 装配bean后执行后台进程任务处理线程的处理方式
- 获取指定进程所有线程的当前执行模块
- (某培训机构的练习题)子线程循环 10 次,接着主线程循环 100 次,接着又回到子线程循环 10 次,接着再回到主线程又循环 100 次,如此循环50次,试写出代码。
- 面试题:子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次
- 子线程循环10次,接着主线程循环5次,接着又回到子线程循环10次,接着再回到主线程又循环5次,如此循环50次,请写出程序。
- 将进程变成一个线程执行代码
- 关于for 循环里 线程执行顺序问题
- C++ windows多线程 线程描述了进程内代码的执行路径。进程中同时可以有多个线程在执行,为了使他们能够同时运行,操作系统为每个线程轮流分配CPU时间片,为了充分地利用CPU提高软件产品的性能,一
- Java多线程面试题:子线程循环10次,接着主线程循环100,接着又回到子线程循环10次, 接着再回到主线程又循环100,如此循环50次
- [Java 09 多线程] 线程是指一个进程在执行过程中可以产生更小的程序单元
- 进程、线程、并发执行的概念
- (13)多线程与并发库之java5阻塞队列(BlockingQueue)的应用----子线程循环10次,接着主线程循环100次,接着又回到子线程循环10次,接着再回到主线程循环100次,如此循环50次
- (13)多线程与并发库之java5阻塞队列(BlockingQueue)的应用----子线程循环10次,接着主线程循环100次,接着又回到子线程循环10次,接着再回到主线程循环100次,如此循环50次
- 利用远程线程将代码注入到目标进程中执行
- 利用远程线程将代码注入到目标进程中执行
- 远程线程模板(将执行代码写入目标进程)
- ExitThread只结束主线程,如果还有其它线程,则进程继续执行
- 请问HOOK自己进程API写函数头写到一半,其他线程执行该API时怎么办?
- [Java 09 多线程] 线程是指一个进程在执行过程中可以产生更小的程序单元