このようなことを頻繁に行う必要があります。
AsyncOperation * pAsyncOperation = new AsyncOperation();
auto bindOperation = std::bind(&AsyncOperation::operator(), std::ref(*pAsyncOperation));
std::thread thread(bindOperation );
thread.join();
(関数オブジェクトとも呼ばれます) をAsyncOperation
実装する任意のカスタム クラスです。operator()
の代わりにstd::bind
を使用することを に示すことは可能ですか? これにより、 で参照を保持する必要なく、メモリ リークが防止され、スレッドの最後で自動的にが削除されます。つまり、この非同期タスクの最後です。std::shared_ptr
std::ref
pAsyncOperation
AsyncOperation
編集:私は常にstd::threadにアクセスできるとは限りません.スレッドライブラリはboost::threadまたはその他のプラットフォーム依存スレッドである可能性があります. 結果として、std::async にはアクセスできません。
私の主な問題は、std::bind で所有権の概念を持つことです。