线程  
 更多...
#include <threads.hpp>
 | 
| virtual void  | run () | 
|   | 线程处理函数,默认调用内部的Runable,派生线程类可重写此函数  更多...
  | 
|   | 
线程 
在文件 threads.hpp 第 89 行定义.
 
      
        
          | typedef void*(*  winux::Thread::ThreadFuncPtr) (void *param) | 
        
      
 
 
  
  
      
        
          | winux::Thread::Thread  | 
          ( | 
          bool  | 
          isStartup = false | ) | 
           | 
         
       
   | 
  
inlineexplicit   | 
  
 
构造函数1 
isStartup=false时不立即创建线程,用户手动调用startup()函数创建线程 isStartup=true时立即创建一个线程,以run()作为线程处理函数,用户需要派生Thread类重写run()函数以定义自己的处理 
在文件 threads.hpp 第 118 行定义.
 
 
template<typename _Fx , typename... _ArgType> 
  
  
      
        
          | winux::Thread::Thread  | 
          ( | 
          bool  | 
          isStartup,  | 
         
        
           | 
           | 
          _Fx  | 
          routine,  | 
         
        
           | 
           | 
          _ArgType &&...  | 
          arg  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
inlineexplicit   | 
  
 
 
  
  
      
        
          | virtual winux::Thread::~Thread  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
inlinevirtual   | 
  
 
 
      
        
          | winux::Thread::Thread  | 
          ( | 
          Thread &&  | 
          other | ) | 
           | 
        
      
 
 
      
        
          | int winux::Thread::detach  | 
          ( | 
           | ) | 
           | 
        
      
 
使线程分离 
一个可连接线程启动后必须调用joined()来等待运行完毕,内部资源才能正确释放。调用此detach()方法后不能再调用joined()方法。 此时,线程函数若有访问Thread对象的数据,必须保证线程运行结束前Thread对象的存在,但是因为没有了joined()方法的同步,你需要自己设计代码来保证对象不会提前释放。 设置删除器可以一定程度上简化代码,如果Thread对象设置了删除器,那默认的线程函数处理时会在运行结束前调用删除器释放Thread对象。 若你调用了startupEx()提供自己的线程处理函数,那就需要自己设计代码来保证Thread对象不会提前释放。 
 
 
  
  
      
        
          | static void winux::Thread::Exit  | 
          ( | 
          void *  | 
          exitVal = NULL | ) | 
           | 
         
       
   | 
  
static   | 
  
 
 
  
  
      
        
          | void* winux::Thread::getExitVal  | 
          ( | 
           | ) | 
           const | 
         
       
   | 
  
inline   | 
  
 
 
  
  
      
        
          | static void* winux::Thread::Join  | 
          ( | 
          Thread &  | 
          otherThread | ) | 
           | 
         
       
   | 
  
static   | 
  
 
调用者线程连接指定其他线程 
退出状态由返回值或者otherThread.getExitVal()取得 
 
 
      
        
          | void* winux::Thread::joined  | 
          ( | 
           | ) | 
           | 
        
      
 
 
  
  
      
        
          | virtual void winux::Thread::run  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
protectedvirtual   | 
  
 
线程处理函数,默认调用内部的Runable,派生线程类可重写此函数 
 
 
template<typename _Dt > 
  
  
      
        
          | Thread& winux::Thread::setCustomDeleter  | 
          ( | 
          _Dt  | 
          fn | ) | 
           | 
         
       
   | 
  
inline   | 
  
 
 
  
  
      
        
          | Thread& winux::Thread::setDefaultDeleter  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
inline   | 
  
 
 
  
  
      
        
          | Thread& winux::Thread::setExitVal  | 
          ( | 
          void *  | 
          exitVal | ) | 
           | 
         
       
   | 
  
inline   | 
  
 
 
template<typename _Fx , typename... _ArgType> 
  
  
      
        
          | Thread& winux::Thread::setRunable  | 
          ( | 
          _Fx  | 
          routine,  | 
         
        
           | 
           | 
          _ArgType &&...  | 
          arg  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
inline   | 
  
 
 
      
        
          | int winux::Thread::startup  | 
          ( | 
           | ) | 
           | 
        
      
 
实际创建一个线程 
以run()作为线程处理,用户可继承Thread类重写run()方法以定义自己的处理;也可以setRunable()设置一个可运行对象作为线程处理例程 startup()会设置_isRunning为true,在默认的线程处理函数里,调用完run()方法后设置_isRunning为false 
 
 
template<typename _Fx , typename... _ArgType> 
  
  
      
        
          | int winux::Thread::startup  | 
          ( | 
          _Fx  | 
          routine,  | 
         
        
           | 
           | 
          _ArgType &&...  | 
          arg  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
inline   | 
  
 
 
      
        
          | int winux::Thread::startupEx  | 
          ( | 
          ThreadFuncPtr  | 
          startRoutine,  | 
        
        
           | 
           | 
          void *  | 
          param  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
 
该类的文档由以下文件生成: