この記事は2020年04月22日に投稿しました。
目次
リンク
1. はじめに
こんにちは、iOSのエディタアプリPWEditorの開発者の二俣です。
今回はWin32 APIで現在のスレッドハンドルを取得する方法についてです。
2. Win32 APIで現在のスレッドハンドルを取得する
Win32 APIで現在のスレッドハンドルを取得する方法ですが、GetCurrentThread関数を使用します。
書式
HANDLE GetCurrentThread();
戻り値
現在のスレッドの疑似ハンドル
実装例
#include <iostream> #include <Windows.h> DWORD WINAPI ThreadProc(LPVOID pParam) { std::cout << "ThreadProc:IN" << std::endl; // main関数から処理再開を待ちます。 HANDLE hEvent = OpenEvent(EVENT_ALL_ACCESS, FALSE, L"event"); WaitForSingleObject(hEvent, INFINITE); CloseHandle(hEvent); // スレッドハンドルを取得します。 HANDLE hThread = GetCurrentThread(); std::cout << "ThreadProc:Thread Handle=" << hThread << std::endl; std::cout << "ThreadProc:OUT" << std::endl; return 0; } int main() { // スレッドを待たせるためイベントを使用します。 HANDLE hEvent = CreateEvent(NULL, FALSE, FALSE, L"event"); ResetEvent(hEvent); // スレッドを生成し、開始します。 std::cout << "main:CreateThread" << std::endl; HANDLE hThread = CreateThread(NULL, 0, ThreadProc, NULL, 0, NULL); // スレッド処理の開始を待ちます。 Sleep(1000); // イベントをシグナル状態にして、スレッド処理を進めます。 std::cout << "main:SetEvent" << std::endl; SetEvent(hEvent); CloseHandle(hEvent); CloseHandle(hThread); getchar(); return 0; }
API Reference
3. おわりに
スレッドについて調べているときに、スレッドハンドルの取得方法を知りました。
今のところ使用する状況は思いつきませんが、覚えておこうと思います。
リンク
紹介している一部の記事のコードはGitlabで公開しています。
興味のある方は覗いてみてください。
私が勤務しているニューラルでは、主に組み込み系ソフトの開発を行っております。
弊社製品のハイブリッドOS Bi-OSは高い技術力を評価されており、特に制御系や通信系を得意としています。
私自身はiOSモバイルアプリやウィンドウズアプリを得意としております。
ソフトウェア開発に関して相談などございましたら、お気軽にご連絡ください。
また一緒に働きたい技術者の方も随時募集中です。
興味がありましたらご連絡ください。
EMAIL : info-nr@newral.co.jp / m-futamata@newral.co.jp
TEL : 042-523-3663
FAX : 042-540-1688