多线程入门
2015-11-24 21:40
513 查看
这里写一个很简单的多线程的入门的程序吧,多线程我还有很长的路要走的呀,这里需要注意的是多线程函数的值的传递
编译时的命令为:
$ g++ test_selltickets.cpp -o test_selltickets -lpthread
#include <stdio.h> #include <string.h> #include <pthread.h> #include <semaphore.h> #include <stdlib.h> #include <unistd.h> #define N 5 void *thread_function(void* arg); pthread_mutex_t mutex; int count = 100; int main(int argc, char* argv[]) { if(argc < 4) { printf("Usage : %s infile1 infile2 outdic\n", argv[0]); exit(-1); } int res; pthread_t a_thread ; void *thread_result; res = pthread_mutex_init(&mutex, NULL); if(res != 0) { printf("Mutex init error!\n"); exit(-1); } int i = 0; for(i = 0; i < N; ++ i) { res = pthread_create(&a_thread[i], NULL, thread_function, &i); if(res != 0) { printf("Thread create failure!\n"); exit(-1); } sleep(1); } for(i = 0; i < N; ++ i) { res = pthread_join(a_thread[i], &thread_result); if(res != 0) { printf("Thread join failure!\n"); exit(-1); } } printf("Thread join \n"); pthread_mutex_destroy(&mutex); return 0; } void *thread_function(void* arg) { int id = *((int*)arg); // Pay Attention the value while(1) { pthread_mutex_lock(&mutex); if(count > 0) { printf("Thread %d Sell the NO %d tickek\n", id + 1, count); -- count; }else{ pthread_mutex_unlock(&mutex); break; } pthread_mutex_unlock(&mutex); sleep(1); } }
编译时的命令为:
$ g++ test_selltickets.cpp -o test_selltickets -lpthread
相关文章推荐
- Marshal's Confusion III(快速幂)
- 【转】qt-vs-addin:Qt4和Qt5之VS插件如何共存与使用
- Scala特质
- Mean Shift的资料
- Java NIO教程(中)
- LEETCODE--Excel Sheet Column Title
- nyoj--77--开灯问题
- 杂谈:软件开发过程中,客户在想些什么
- Android自定义ViewGroup之子控件的自动换行和添加删除
- 数据库的最大连接数过小导致openstack的dashboard报错
- 记录android反射机制【一】
- iOS开发46-iOS Swift元组(Tuples)
- JavaIO和JavaNIO
- Java NIO教程(上)
- 黑马程序员——IO
- 为什么要把bss段清0
- 1 - Reverse Integer
- GDOI模拟赛Round 1
- 【数据结构与算法】排序算法之五:归并排序
- 恶补Java(十四)——Java枚举