P296 18.3 线程存在的问题和临界区

This commit is contained in:
riba2534
2019-02-03 00:49:20 +08:00
parent 4550d7d342
commit 8821c1d0be
6 changed files with 518 additions and 8 deletions

30
ch18/thread3.c Normal file
View File

@@ -0,0 +1,30 @@
#include <stdio.h>
#include <pthread.h>
void *thread_summation(void *arg);
int sum = 0;
int main(int argc, char *argv[])
{
pthread_t id_t1, id_t2;
int range1[] = {1, 5};
int range2[] = {6, 10};
pthread_create(&id_t1, NULL, thread_summation, (void *)range1);
pthread_create(&id_t2, NULL, thread_summation, (void *)range2);
pthread_join(id_t1, NULL);
pthread_join(id_t2, NULL);
printf("result: %d \n", sum);
return 0;
}
void *thread_summation(void *arg)
{
int start = ((int *)arg)[0];
int end = ((int *)arg)[1];
while (start <= end)
{
sum += start;
start++;
}
return NULL;
}