私は、PostThreadMessageに渡すためにboost :: threadのネイティブWindows IDを取得する必要があるBoost 1.47.0を使用するVisual Studio 2008 C++プロジェクトを持っています。PostThreadMessageのboost :: threadのIDを取得する
DWORD thread_id = ::GetThreadId(mythread.native_handle());
これは素晴らしいですが、GetThreadId
が存在しない場合、私はまた、XPで動作するように私のアプリを必要とする:
と7、私はこれを行うだろう。
私はboost:threadがboost :: thread :: idのプライベートデータメンバーthread_data
にスレッドID値を格納していることを発見しました。私は一時的なboost::thread::id
オブジェクトを参照するためのコンパイラの警告を取得を開始、
boost::detail::thread_data_base* tdb = *reinterpret_cast< boost::detail::thread_data_base** >(&message_thread.get_id());
DWORD thread_id = tdb->id;
しかし:私はいくつかの厄介なキャストを行うことによって、それに得ることができます。
warning C4238: nonstandard extension used : class rvalue used as lvalue
IDを取得するには良い方法はありますか?私が必要とするデータを見るのは非常にイライラしますが、それを得ることはできません。
おかげで、
これは私が今日見た中で最もクールなものです。私はそれを理解しようとする次の3時間を無駄にします。ありがとう!余分な説明文は – PaulH
+1です。 – PaulH