思考:
1.什么是多线程?
2.什么是并发执行?
模拟十个线程的实现:
每个线程增加十万,十个线程达到百万。
代码如下:
#include <stdio.h> #include <pthread.h> #define THREAD_COUNT 10 //设定十个线程 //线程的回调函数 void *thread_callback(void *arg) { int *pcount = (int *)arg; int i = 0; //每个线程增加十万 while (i ++ < 100000) { (*pcount) ++; //最重要! usleep(1); //休眠1us } } int main () { pthread_t threadid[THREAD_COUNT] = {0}; int i = 0; int count = 0; //共享资源计数 //创建十个线程 for (i = 0;i < THREAD_COUNT;i ++) { //带有四个参数 1.返回的线程id地址 2.线程的属性(堆、栈)3.xc入口函数 //4.主线程往子线程传的参数 pthread_create(&threadid[i], NULL, thread_callback, &count); } for (i = 0;i < 100;i ++) { printf("count : %d\n", count); sleep(1); } }
实现结果:
gcc -o lock lock.c -lpthread
问题:为什么没有到想象中的十万?