|
|
От: |
eao197
|
http://eao197.blogspot.com |
| Дата: | 18.01.05 09:48 | ||
| Оценка: | |||
W>#include <iostream>
W>#include <process.h>
W>#include <windows.h>
W>/*volatile*/ bool go = true;
W>const unsigned int MaxIter = 1000000000;
W>// Эта процедура выполняет интенсивный вычисления.
W>unsigned int __stdcall Calc(void *)
W>{
W> double sum = 0.0;
W> for (unsigned int i = MaxIter; (i != 0) && go; --i)
W> sum += 1. / i;
W> std::cout << "sum = " << sum << std::endl;
W> return 0;
W>};
W>int main()
W>{
W> unsigned int id;
W> HANDLE h = reinterpret_cast<HANDLE>(_beginthreadex(NULL, 0, &Calc, NULL, 0, &id));
W> // Пользователь подумал 20 миллисекунд
W> ::Sleep(20);
W> // .. и решил отменить вычисления
W> go = false;
W> ::WaitForSingleObject(h, INFINITE);
W> ::CloseHandle(h);
W> return 0;
W>}
W>W>21.3005
W>0.00287083
W>/O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /EHsc
W>/MD /GS /Fo"Release/" /Fd"Release/vc70.pdb" /W3 /nologo /c /Wp64 /Zi /TP
W>