⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 POSIX下线程控制的实验程序(操作系统实验)
💻 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 + -