• 首頁
  • 文件
  • 下載
  • 狀態
  • 常見問題
  • 郵件列表
  • 應用程式
  • 外部鏈結
  • 版權
  • 志願者
  • 聯繫

類別:Thread

記憶體配置統一管理

類型 使用 成員 說明
建構子 public Allocator(void)
解構子 public ~Allocator(void)
函式 public static void * allocate(long size) 配置記憶體。
函式 public static void free (void * block) 釋放記憶體。
函式 public static int blocks (void) 記憶體配置區塊數量。

建議

所有CIOS Audio Core內部的程式,都被建議使用Allocator來配置及釋放記憶體。

C++定義


class Thread
{
  public:

    int                     running     ;
    int                     StackSize   ;
    bool                    Reservation ; // STACK_SIZE_PARAM_IS_A_RESERVATION ;
    ThreadData              Data        ;
    std::list<ThreadData *> AllThreads  ;

    explicit  Thread                  (int stackSize,bool reservation) ;
    explicit  Thread                  (void) ;
    virtual ~ Thread                  (void) ;

    int                   setPriority (int priority) ;

    virtual void          start       (void) ;
    virtual ThreadData  * start       (int Type) ;
    virtual ThreadData  * start       (int Type,char * arguments) ;
    virtual ThreadData  * start       (int Type,ThreadFunction ExternalThread) ;
    virtual void          quit        (void) ;
    virtual void          suspend     (void) ;
    virtual void          resume      (void) ;
    virtual void          terminate   (void) ;
    virtual void          cleanup     (void) ;
    virtual bool          proceed     (void) ;
    virtual bool          finalize    (int interval = 20) ;

    virtual int           exit        (int exitcode) ;

    void                  actualRun   (void) ;
    void                  actualRun   (int Type,ThreadData * data) ;
    void                  actualJoin  (void) ;

    #if defined(WIN32) || defined(_WIN32)
    HANDLE                Id          (void) ;
    #else
    pthread_t             Id          (void) ;
    #endif

  protected:

    virtual void         ThreadEvent  (void) ;
    virtual void         run          (void) ;
    virtual void         run          (int Type,ThreadData * Data) ;

    virtual bool         detection    (void) ;
    virtual bool         recycle      (void) ;

    virtual void         DeleteThread (ThreadData * Data) ;

  private:

    #if defined(WIN32) || defined(_WIN32)
    static unsigned int  SingleThread (LPVOID arg) ;
    static unsigned int  MultiThread  (LPVOID arg) ;
    #else
    static void *        SingleThread (void * arg) ;
    static void *        MultiThread  (void * arg) ;
    #endif

};


範例


配置1024位元的記憶體。
char * buffer ;
buffer = (char *)Allocator::allocate(1024) ;

釋放記憶體。
Allocator::free(buffer) ;