?? main.c
字號(hào):
/*
* POSIX下線程控制的實(shí)驗(yàn)程序殘缺版 1.2
* 作者:Sunner Sun
* 最后修改時(shí)間: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 /* 線程的個(gè)數(shù) */
unsigned long long main_counter, counter[MAX_THREAD]; /* unsigned long long是比long還長的整數(shù) */
void* thread_worker(void*);
int main(int argc, char* argv[])
{
int i, rtn, ch;
pthread_t pthread_id[MAX_THREAD] = {0}; /* 存放每個(gè)線程的id */
for (i=0; i<MAX_THREAD; i++)
{
pthread_create(&pthread_id[i], NULL, (void*)thread_worker, (void*)i);
/* 在這里填寫代碼,用pthread_create建一個(gè)普通的線程,
* 線程id存入pthread_id[i],
* 線程執(zhí)行的函數(shù)是thread_worker,并i作為參數(shù)傳遞給線程 */
}
/* 用戶按一次回車執(zhí)行下面的循環(huán)體一次。按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(;;) /* 無限循環(huán) */
{
counter[thread_num]++; /* 本線程的counter加一 */
main_counter++; /* 主counter加一 */
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -