Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <thread>
- template < class T >
- class Singleton
- {
- protected:
- Singleton( void ) = default;
- Singleton( const Singleton& other ) = delete;
- Singleton( Singleton&& other ) = delete;
- public:
- static T* Instance( void )
- {
- static T instance;
- return &instance;
- }
- };
- class Test : public Singleton< Test >
- {
- friend Test* Singleton< Test >::Instance( void );
- Test( void )
- {
- printf( "Test()\n" );
- }
- public:
- void run( int i )
- {
- printf( "Thread %i run( int )\n", i );
- }
- };
- void Thread_Func( int idx )
- {
- Test::Instance()->run( idx );
- Singleton< Test >::Instance()->run( idx );
- }
- int main( void )
- {
- std::thread t_1( Thread_Func, 1 );
- std::thread t_2( Thread_Func, 2 );
- std::thread t_3( Thread_Func, 3 );
- std::thread t_4( Thread_Func, 4 );
- std::thread t_5( Thread_Func, 5 );
- t_1.detach();
- t_2.detach();
- t_3.detach();
- t_4.detach();
- t_5.detach();
- std::cin.get();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement