C ++ 11でスレッドを終了するにはどうすればよいですか?
ここでは、C++11でスレッドを終了する方法を説明します。 C ++ 11には、スレッドを終了する直接的な方法はありません。
std ::future
1つのpromiseオブジェクトを作成するには、次の構文に従う必要があります-
std::promise<void> exitSignal;
次に、メイン関数でこの作成されたpromiseオブジェクトから関連するfutureオブジェクトをフェッチします-
std::future<void> futureObj = exitSignal.get_future();
次に、スレッドの作成中にmain関数を渡し、futureオブジェクトを渡します-
std::thread th(&threadFunction, std::move(futureObj));
例
#include <thread> #include <iostream> #include <assert.h> #include <chrono> #include <future> using namespace std; void threadFunction(std::future<void> future){ std::cout << "Starting the thread" << std::endl; while (future.wait_for(std::chrono::milliseconds(1)) == std::future_status::timeout){ std::cout << "Executing the thread....." << std::endl; std::this_thread::sleep_for(std::chrono::milliseconds(500)); //wait for 500 milliseconds } std::cout << "Thread Terminated" << std::endl; } main(){ std::promise<void> signal_exit; //create promise object std::future<void> future = signal_exit.get_future();//create future objects std::thread my_thread(&threadFunction, std::move(future)); //start thread, and move future std::this_thread::sleep_for(std::chrono::seconds(7)); //wait for 7 seconds std::cout << "Threads will be stopped soon...." << std::endl; signal_exit.set_value(); //set value into promise my_thread.join(); //join the thread with the main thread std::cout << "Doing task in main function" << std::endl; }
出力
Starting the thread Executing the thread..... Executing the thread..... Executing the thread..... Executing the thread..... Executing the thread..... Executing the thread..... Executing the thread..... Executing the thread..... Executing the thread..... Executing the thread..... Executing the thread..... Executing the thread..... Executing the thread..... Executing the thread..... Threads will be stopped soon.... Thread Terminated Doing task in main function
-
Androidでスレッドを作成する方法は?
例に入る前に、スレッドとは何かを知っておく必要があります。スレッドは軽量のサブプロセスであり、UIを中断することなくバックグラウンド操作を実行します。この例は、Androidでスレッドを作成する方法について示しています。 ステップ1 − Android Studioで新しいプロジェクトを作成し、[ファイル]⇒[新しいプロジェクト]に移動して、新しいプロジェクトを作成するために必要なすべての詳細を入力します。 ステップ2 −次のコードをres / layout/activity_main.xmlに追加します。 <?xml version="1.0" encoding
-
Tkinter Pythonでスレッドを使用する方法は?
Tkinterでは、スレッド化を使用して一度に複数の関数を呼び出すことができます 。アプリケーション内の一部の機能の非同期実行を提供します。 Pythonでスレッドを使用するために、スレッドというモジュールをインポートできます。 スレッドをサブクラス化します クラス。新しいクラス内で、実行を上書きする必要があります メソッドを実行し、そこでロジックを実行します。 したがって、基本的にスレッドを使用すると、一度に複数の作業を行うことができます。アプリケーションでスレッド化を実現するために、Tkinterは Thread()を提供します 機能。 例を挙げて、しばらくスリープしてから別の関数を