win32 mutithread-busyloop
来源:互联网 发布:广州合优网络前端 编辑:程序博客网 时间:2024/05/22 20:35
把代码放进VS2008跑,因为用了多线程C runtime lib,所以并不会像书中说的那么stupid:
/* * BusyWait.c * * Sample code for Multithreading Applications in Win32 * This is from Chapter 3, Listing 3-1 * * Demonstrate the effect on performance * of using a busy loop. First call the * worker routine with just a function call * to get a baseline performance reading, * then create a second thread and a * busy loop. * * Build command: cl /MD busywait.c */#define WIN32_LEAN_AND_MEAN#include <stdio.h>#include <stdlib.h>#include <windows.h>#include <time.h>#include "MtVerify.h"DWORD WINAPI ThreadFunc(LPVOID);int main(){ HANDLE hThrd; DWORD exitCode = 0; DWORD threadId; DWORD begin; DWORD elapsed; puts("Timing normal function call..."); begin = GetTickCount(); ThreadFunc(0); elapsed = GetTickCount()-begin; printf("Function call took: %d.%.03d seconds\n\n", elapsed/1000, elapsed%1000); puts("Timing thread + busy loop..."); begin = GetTickCount(); MTVERIFY( hThrd = CreateThread(NULL, 0, ThreadFunc, (LPVOID)1, 0, &threadId ) ); /* This busy loop chews up lots of CPU time */ for (;;) { GetExitCodeThread(hThrd, &exitCode); if ( exitCode != STILL_ACTIVE ) break; } elapsed = GetTickCount()-begin; printf("Thread + busy loop took: %d.%.03d seconds\n", elapsed/1000, elapsed%1000); MTVERIFY( CloseHandle(hThrd) ); return EXIT_SUCCESS;}/* * Cute little busy work routine that computes the value * of PI using probability. Highly dependent on having * a good random number generator (rand is iffy) */DWORD WINAPI ThreadFunc(LPVOID n){ int i; int inside = 0; double val; UNREFERENCED_PARAMETER(n); /* Seed the random-number generator */ srand( (unsigned)time( NULL ) ); for (i=0; i<1000000; i++) { double x = (double)(rand())/RAND_MAX; double y = (double)(rand())/RAND_MAX; if ( (x*x + y*y) <= 1.0 ) inside++; } val = (double)inside / i; printf("PI = %.4g\n", val*4); return 0;}
- win32 mutithread-busyloop
- mutiThread Callable
- study linux mutithread
- 线程等待 推荐WaitForSingleObject() 不推荐busyLoop
- volatile used when communicate with hardware register and mutithread program.
- win32
- wiN32
- Win32
- WIN32
- win32
- Win32
- Win32
- WIN32
- win32
- WIN32
- Win32 -Win32数据类型
- [Win32] Win32 RS232讀寫
- Win32 - 07 Win32数据类型
- Windows 控制台注册表工具 Reg
- Linux 进程间通讯之有名管道方式
- Eboot之函数BootloaderMain函数分析
- 怎么判断textbox输入的都是空格
- C# 为私有方法添加单元测试
- win32 mutithread-busyloop
- regedit.exe的命令行使用
- 在linux下搭建基于S3C6410的嵌入式开发环境
- python 占位符 %s 碰到 like时
- 同步(1)
- 脚本化HTTP
- 学习笔记之使用光标之使用行号(三)
- REST和SOAP
- iphone 有锁和无锁是什么意思?