linux线程同步
来源:互联网 发布:sybase数据库下载 编辑:程序博客网 时间:2024/06/06 13:06
/* Copyright (c) 2014 * All rights reserved * http://blog.csdn.net/ezhou_liukai */#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <pthread.h>#include <semaphore.h>//using mutex lock to test thread synchronizepthread_mutex_t g_mutex; void *mutex_lock_thread(void *agr){ pthread_mutex_lock(&g_mutex); printf("\nthread_Id:%u start\n", (unsigned int) pthread_self()); printf("susspend thread 0.2 s\n"); sleep(0.2); printf("thread_Id:%u end\n", (unsigned int) pthread_self()); pthread_mutex_unlock(&g_mutex); return NULL;}void mutex_lock_test(){ printf("\n----------- mutex lock test ------------\n "); int i = 0, n = 10; pthread_t tid[10]; pthread_setconcurrency(11); pthread_mutex_init(&g_mutex, NULL); for(i = 0; i < n; i++) { pthread_create(&tid[i], NULL, &mutex_lock_thread, NULL); } for(i = 0; i < n; i++) { pthread_join(tid[i], NULL); } printf("\n------------ mutex lock test end -----------\n");}//end using mutex lock to test thread synchronize//using semaphore to test thread synchronizesem_t g_sem;void *semaphore_thread(void *agr){ sem_wait(&g_sem); printf("\nthread_Id:%u start\n", (unsigned int) pthread_self()); printf("suspend thread 0.2s\n"); sleep(0.2); printf("thread_Is:%u end\n", (unsigned int) pthread_self()); sem_post(&g_sem); return NULL;}void semaphore_test(){ printf("\n----------- semaphore test -----------\n"); int i = 0, n = 10; pthread_t tid[10]; sem_init(&g_sem, 0, 1); pthread_setconcurrency(11); for (i = 0; i < n; i++) { pthread_create(&tid[i], NULL, &semaphore_thread, NULL); } for (i = 0; i < n; i++) { pthread_join(tid[i], NULL); } printf("\n----------- semaphore test end -----------\n");}// end using semaphore to test thread synchronizeint main(int argc, char *argv[]){ mutex_lock_test(); semaphore_test(); return 1;}
0 0
- linux 线程 线程同步
- linux 线程同步
- Linux中的线程同步
- Linux线程同步
- Linux 下线程同步
- Linux线程同步
- Linux线程同步
- Linux线程同步
- linux线程同步机制
- Linux 线程同步
- linux线程同步
- Linux线程及同步
- linux下线程同步
- linux 线程同步
- linux线程同步问题
- Linux多线程,线程同步
- linux线程同步浅析
- linux线程同步
- R12打中文补丁报错
- struct 及与class的区别
- 花瓣网轮播图效果
- Java nio
- hdu 3657 Game(最小割)
- linux线程同步
- Thread—join加塞
- HDU1285
- Hadoop 解除 "Name node is in safe mode"
- 第七周作业1——背包问题
- 【DP|完全背包】HDU-1114 Piggy-Bank
- 一个简单的双色球算法
- 淘宝:TLog的设计
- [转载]工具包导入matlab中方法