これは正確に行うことができます。プログラム開始時にコンストラクタがスレッドを開始するグローバルオブジェクトを持つことができます。
個人的には、ライブラリを予期せずに起動するのは良い考えではないと思いますが、ユースケースでは意味をなさない可能性があります。スレッドの正確な要件、シャットダウンの仕方などを文書化してください。プロセス内のすべてのスレッドはが協力する必要があります。
例コード:
#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;
}
A MyThreadはA MyThreadは A MyThreadはA MyThreadは
を破壊された
を停止した
メイン
が開始された
を構築しました代わりに何をお勧めしますか? – Drgabble
でも簡単な例を教えてください。 – Drgabble
@Drgabbleライブラリを使用しているスレッドが呼び出せるスレッドを開始および停止する機能を持つことをお勧めします。 –