码迷,mamicode.com
首页 > 编程语言 > 详细

设置线程的亲缘性(指定其所运行的CPU核心)

时间:2014-08-06 19:37:12      阅读:712      评论:0      收藏:0      [点我收藏+]

标签:http   os   io   for   2014   ar   amp   管理   

#include <stdio.h>
#include <windows.h>
#include <process.h>
#include <time.h>

unsigned int _stdcall thread_proc(void* arg)
{
	double	x =	100.0;
	int		r = 0;

	srand((unsigned)time(0) );
	while(1)
	{
		r = rand();//模拟运算
		x/=r;
	}
	return 0;
}

int main()
{
	SYSTEM_INFO s_info={0};
	DWORD		cpu_count = 0;
	size_t		i=0;
	HANDLE*		hThread;

	
	GetSystemInfo(&s_info);
	
	//取系统CPU个数
	cpu_count	= s_info.dwNumberOfProcessors;
	
	//根据CPU个数创建相应数量的线程
	hThread		= calloc(cpu_count,sizeof(HANDLE) );

	for(i=0;i<cpu_count;i++)
	{
		//创建初始状态为挂起
		hThread[i] = (HANDLE)_beginthreadex(NULL,0,thread_proc,NULL,CREATE_SUSPENDED,NULL);
		/*
		*00000001:CPU0
		*00000010:CPU1
		*00000100:CPU2
		*00001000:CPU3
		**/
		SetThreadAffinityMask(hThread[i], 1<<i);//CPU掩码
		ResumeThread(hThread[i]);//唤醒
	}
	printf("打开任务管理器查看...\n");
	for(i=0; i<cpu_count;i++)
	{
		WaitForSingleObject(hThread[i],INFINITE);
	}
	free(hThread);
	return 0;
}

bubuko.com,布布扣

设置线程的亲缘性(指定其所运行的CPU核心),布布扣,bubuko.com

设置线程的亲缘性(指定其所运行的CPU核心)

标签:http   os   io   for   2014   ar   amp   管理   

原文地址:http://my.oschina.net/mlgb/blog/298553

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!