📄 main.c
字号:
/*
* POSIX下线程控制的实验程序残缺版 1.2
* 作者:Sunner Sun
* 最后修改时间:2005-3-16 15:10
*/
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <ctype.h>
#include <pthread.h>
#define MAX_THREAD 3 /* 线程的个数 */
unsigned long long main_counter, counter[MAX_THREAD]; /* unsigned long long是比long还长的整数 */
void* thread_worker(void*);
int main(int argc, char* argv[])
{
int i, rtn, ch;
pthread_t pthread_id[MAX_THREAD] = {0}; /* 存放每个线程的id */
for (i=0; i<MAX_THREAD; i++)
{
pthread_create(&pthread_id[i], NULL, (void*)thread_worker, (void*)i);
/* 在这里填写代码,用pthread_create建一个普通的线程,
* 线程id存入pthread_id[i],
* 线程执行的函数是thread_worker,并i作为参数传递给线程 */
}
/* 用户按一次回车执行下面的循环体一次。按q退出 */
do
{
unsigned long long sum = 0;
/* 求所有线程的counter的和 */
for (i=0; i<MAX_THREAD; i++)
{
sum += counter[i];
printf("%llu ", counter[i]);
}
printf("%llu/%llu", main_counter, sum);
}
while ((ch = getchar()) != 'q');
return 0;
}
void* thread_worker(void* p)
{
int thread_num;
thread_num=(int)p;
/* 在这里填写代码,把main中的i的值赋给thread_num */
for(;;) /* 无限循环 */
{
counter[thread_num]++; /* 本线程的counter加一 */
main_counter++; /* 主counter加一 */
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -