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