#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);
}*/
03.5 使用多線程完成從0加到1000
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.