プログラムの起動時にC ++スレッドを開始するにはどうすればよいですか?

Drgabble

プログラムがクラウド内のサービスと通信できるようにするC ++ライブラリを作成しています。サーバーを定期的にチェックし、障害が発生した場合にサーバーを再起動するバックグラウンドスレッドを実行したいと思います。ただし、ライブラリの外部にあるメインプログラムが、スレッドの開始について心配する必要がないのは良いことです。ライブラリの使用はに制限する必要がありますuseProcess()この時点で、スレッドはすでに実行されているはずです。

メインプログラムが関数を呼び出さなくてもスレッドを開始するにはどうすればよいですか?サービスクラスの静的コンストラクターでこれを実行して、プログラムの開始時にスレッドを開始する方法はありますか(Javaで行うように)?

デビッドシュワルツ

そのように正確に行うことができます。コンストラクターがプログラムの開始時にスレッドを開始するグローバルオブジェクトを持つことができます。

個人的には、ライブラリが予期せずスレッドを起動するのは良い考えではないと思いますが、ユースケースではそれが理にかなっている可能性があります。スレッドの正確な要件、スレッドをシャットダウンする方法などを必ず文書化してください。プロセス内のすべてのスレッドが連携する必要があります。

コード例:

#include <cstdio>

//--------- BEGIN LIBRARY
class MyThread
{ // The real code goes here
public:
    MyThread()
    { printf("A MyThread has been constructed\n"); }
    ~MyThread()
    { printf("A MyThread has been destroyed\n"); }
    void Start()
    { printf("A MyThread has been started\n"); }
    void Stop()
    { printf("A MyThread has been stopped\n"); }
};

class MyThreadCreator
{ // Just a helper class to construct/start/stop/destroy the other
public:
    MyThread thread;
    MyThreadCreator() { thread.Start(); }
    ~MyThreadCreator() { thread.Stop(); }
};
MyThreadCreator p;
//---------- END LIBRARY

int main()
{
    printf("Main\n");
    return 0;
}

MyThreadが構築されまし
たMyThreadが開始されました
メイン
MyThreadが停止されまし
たMyThreadが破棄されました

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Javaでスレッドを開始/停止/再開するにはどうすればよいですか?

分類Dev

forループで複数のスレッドを開始するにはどうすればよいですか?

分類Dev

C ++で複数のスレッドを開始するにはどうすればよいですか

分類Dev

ボットがSlackでスレッドを開始するにはどうすればよいですか

分類Dev

mvvm / wpfでアプリの起動時にbgスレッドを開始するにはどうすればよいですか?

分類Dev

プログラムの実行時にMicrosoftAzure Speech To Textで文字起こしを開始するにはどうすればよいですか?(Unity、C#)

分類Dev

Debianヘッドレスサーバー(Raspberry Pi)で起動時にサービスを開始するにはどうすればよいですか?

分類Dev

アプリケーションの終了時に閉じないスレッドを開始するにはどうすればよいですか?(Qt C ++)

分類Dev

プログラムの起動時にプログラムでファイルを開くにはどうすればよいですか?

分類Dev

Windowsの起動時にC#プログラムを非表示にするにはどうすればよいですか?プログラムを通常どおり開いているときは非表示にできませんか?

分類Dev

自動実行プログラムを早期に開始するにはどうすればよいですか?

分類Dev

自動実行プログラムを早期に開始するにはどうすればよいですか?

分類Dev

ブロッキングキューとスプリング-起動時にスレッドプールを開始するにはどうすればよいですか?

分類Dev

i3wmで、起動時に別のワークスペースでプログラムを開くにはどうすればよいですか?

分類Dev

プロセスを開始し、それをPythonのバックグラウンドに配置するにはどうすればよいですか?

分類Dev

開始時にemacsが保存されたデスクトップをロードしないようにするにはどうすればよいですか?

分類Dev

開始時にemacsが保存されたデスクトップをロードしないようにするにはどうすればよいですか?

分類Dev

起動時にプログラムを実行するにはどうすればよいですか?

分類Dev

起動時にプログラムを実行するにはどうすればよいですか?

分類Dev

ハドソンのJUnit / Ant:ヘッドレスモードでテストを開始するにはどうすればよいですか?

分類Dev

起動時に開始するサービスを作成するにはどうすればよいですか?

分類Dev

サーブレットからスレッドを開始するにはどうすればよいですか?

分類Dev

ドラッグ可能なdivの開始位置を設定するにはどうすればよいですか?

分類Dev

プログラムの実行時にc#FileSystemWatcher関数を無期限に開始するにはどうすればよいですか?

分類Dev

オンロードから開始してスペースプレスから開始するようにプログラムを変更するにはどうすればよいですか?

分類Dev

pthread-joinを呼び出さずに新しいスレッドの実行を開始するにはどうすればよいですか?

分類Dev

ディスパッチグループを使用して同時にロードを開始するにはどうすればよいですか?

分類Dev

プログラムの開始時にホットキーを送信するにはどうすればよいですか?

分類Dev

Delugeをバックグラウンドで開始するにはどうすればよいですか?

Related 関連記事

  1. 1

    Javaでスレッドを開始/停止/再開するにはどうすればよいですか?

  2. 2

    forループで複数のスレッドを開始するにはどうすればよいですか?

  3. 3

    C ++で複数のスレッドを開始するにはどうすればよいですか

  4. 4

    ボットがSlackでスレッドを開始するにはどうすればよいですか

  5. 5

    mvvm / wpfでアプリの起動時にbgスレッドを開始するにはどうすればよいですか?

  6. 6

    プログラムの実行時にMicrosoftAzure Speech To Textで文字起こしを開始するにはどうすればよいですか?(Unity、C#)

  7. 7

    Debianヘッドレスサーバー(Raspberry Pi)で起動時にサービスを開始するにはどうすればよいですか?

  8. 8

    アプリケーションの終了時に閉じないスレッドを開始するにはどうすればよいですか?(Qt C ++)

  9. 9

    プログラムの起動時にプログラムでファイルを開くにはどうすればよいですか?

  10. 10

    Windowsの起動時にC#プログラムを非表示にするにはどうすればよいですか?プログラムを通常どおり開いているときは非表示にできませんか?

  11. 11

    自動実行プログラムを早期に開始するにはどうすればよいですか?

  12. 12

    自動実行プログラムを早期に開始するにはどうすればよいですか?

  13. 13

    ブロッキングキューとスプリング-起動時にスレッドプールを開始するにはどうすればよいですか?

  14. 14

    i3wmで、起動時に別のワークスペースでプログラムを開くにはどうすればよいですか?

  15. 15

    プロセスを開始し、それをPythonのバックグラウンドに配置するにはどうすればよいですか?

  16. 16

    開始時にemacsが保存されたデスクトップをロードしないようにするにはどうすればよいですか?

  17. 17

    開始時にemacsが保存されたデスクトップをロードしないようにするにはどうすればよいですか?

  18. 18

    起動時にプログラムを実行するにはどうすればよいですか?

  19. 19

    起動時にプログラムを実行するにはどうすればよいですか?

  20. 20

    ハドソンのJUnit / Ant:ヘッドレスモードでテストを開始するにはどうすればよいですか?

  21. 21

    起動時に開始するサービスを作成するにはどうすればよいですか?

  22. 22

    サーブレットからスレッドを開始するにはどうすればよいですか?

  23. 23

    ドラッグ可能なdivの開始位置を設定するにはどうすればよいですか?

  24. 24

    プログラムの実行時にc#FileSystemWatcher関数を無期限に開始するにはどうすればよいですか?

  25. 25

    オンロードから開始してスペースプレスから開始するようにプログラムを変更するにはどうすればよいですか?

  26. 26

    pthread-joinを呼び出さずに新しいスレッドの実行を開始するにはどうすればよいですか?

  27. 27

    ディスパッチグループを使用して同時にロードを開始するにはどうすればよいですか?

  28. 28

    プログラムの開始時にホットキーを送信するにはどうすればよいですか?

  29. 29

    Delugeをバックグラウンドで開始するにはどうすればよいですか?

ホットタグ

アーカイブ