03.5 使用多线程完成从0加到1000
2018-03-30 10:54
288 查看
#include<stdio.h> #include<pthread.h> #define N 1000 void* thread_main(void *arg); //void printids(const char *s); int sum = 0; int j = 0; int main(int argc, char *argv[]) { pthread_t t1_id, t2_id; int thread_param = 5; int k = 0; int zsum = 0; if (pthread_create(&t1_id, NULL, thread_main, (void*)&thread_param) != 0) { puts("pthread_create() error1"); return -1; }; if (pthread_create(&t2_id, NULL, thread_main, (void*)&thread_param) != 0) { puts("pthread_create() error2"); return -1; }; pthread_join(t1_id, NULL); pthread_join(t2_id, NULL); //sleep(10); puts("end of main"); //主线程运行累加 while (1) { zsum += ++k; //printf("k = %d, zsum = %d\n", k, zsum); if (k == N) break; } printf("sum = %d\n", sum); printf("zsum = %d\n", zsum); return 0; } //运行线程 void* thread_main(void *arg) { /*int i; int cnt = *((int*)arg); for (i = 0; i < cnt; i++) { sleep(1); puts("running thread"); }*/ while (1) { if (j >= N) { break; } sum += ++j; printf("j = %d, sum = %d\n",j, sum); } return NULL; } /*void printids(const char *s) { pid_t pid; pthread_t tid; pid = getpid(); tid = pthread_self(); printf("%s pid %u tid %u (0x%x)\n", \ s, (unsigned int)pid, (unsigned int)tid, (unsigned int)tid); }*/
相关文章推荐
- java多线程-使用notify和wait完成多线程的顺序执行
- 使用多线程完成文件或图片的加密
- java多线程-使用notify和wait完成多线程的顺序执行
- C#的多线程——使用async和await来完成异步编程(Asynchronous Programming with async and await)
- java多线程-使用notify和wait完成多线程的顺序执行
- java多线程-使用notify和wait完成多线程的顺序执行
- java多线程-使用notify和wait完成多线程的顺序执行
- java多线程-使用notify和wait完成多线程的顺序执行
- 使用管道流和多线程完成以下任务要求: 一个线程对象t1 会从控制台中不停的读取信息,读到之后把数据交给管道输出流,把数据写到管道里面 ,另一个线程对象t2 不停的使用管道输入流从管道
- java多线程-使用notify和wait完成多线程的顺序执行
- java多线程-使用notify和wait完成多线程的顺序执行
- 使用多线程完成Socket
- java多线程-使用notify和wait完成多线程的顺序执行
- java多线程-使用notify和wait完成多线程的顺序执行
- 鱼鱼Chen之学写自己的apk(五)使用Handler完成Android里的多线程操作实例
- java多线程-使用notify和wait完成多线程的顺序执行
- java多线程-使用notify和wait完成多线程的顺序执行
- java多线程-使用notify和wait完成多线程的顺序执行
- java多线程-使用notify和wait完成多线程的顺序执行
- java多线程-使用notify和wait完成多线程的顺序执行