#include <ppltasks.h> #include <string> #include <windows.h> using namespace concurrency; using namespace std; int wmain() { auto t = create_task([]() { DWORD ms; wchar_t str[40]; for (int i = 0; i < 3; i++) { ms = GetTickCount(); // Win32 API() swprintf(str, 40, L"A: Time %d ミリ秒\n", ms); OutputDebugString(str); Sleep(rand() % 100); } }); t.then([]() { OutputDebugString(L"Run Task\n"); }).wait(); } |
A: Time 85645875 ミリ秒 A: Time 85645906 ミリ秒 A: Time 85646375 ミリ秒 Run Task |
int wmain() { auto t = create_task([]() { DWORD ms; wchar_t str[40]; for (int i = 0; i < 3; i++) { ms = GetTickCount(); // Win32 API() swprintf(str, 80, L"A: Time %d ミリ秒\n", ms); OutputDebugString(str); Sleep(rand() % 1000); } return create_task([]() { DWORD ms; wchar_t str[40]; for (int i = 0; i < 3; i++) { ms = GetTickCount(); // Win32 API() swprintf(str, 80, L"B: Time %d ミリ秒\n", ms); OutputDebugString(str); Sleep(rand() % 1000); } }); }); t.then([]() { OutputDebugString(L"Run Task\n"); }).wait(); } |
A: Time 85926562 ミリ秒 A: Time 85926609 ミリ秒 A: Time 85927078 ミリ秒 B: Time 85927406 ミリ秒 B: Time 85927906 ミリ秒 B: Time 85928078 ミリ秒 Run Task |
int wmain() { auto t = create_task([]() { DWORD ms; wchar_t str[40]; for (int i = 0; i < 3; i++) { ms = GetTickCount(); // Win32 API() swprintf(str, 80, L"A: Time %d ミリ秒\n", ms); OutputDebugString(str); Sleep(rand() % 1000); } }); auto t2 = create_task([]() { DWORD ms; wchar_t str[40]; for (int i = 0; i < 3; i++) { ms = GetTickCount(); // Win32 API() swprintf(str, 80, L"B: Time %d ミリ秒\n", ms); OutputDebugString(str); Sleep(rand() % 200); } }); (t && t2).then([]() { OutputDebugString(L"Run A: B: Task END\n"); }).wait(); } |
A: Time 89711031 ミリ秒 B: Time 89711031 ミリ秒 B: Time 89711062 ミリ秒 A: Time 89711062 ミリ秒 B: Time 89711140 ミリ秒 A: Time 89711531 ミリ秒 Run A: B: Task END |
[Next Chapter ↓] Task の関数値
※・