<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                #### 32. 多線程 多線程是多任務處理的一種特殊形式,多任務處理允許讓電腦同時運行兩個或兩個以上的程序。一般情況下,兩種類型的多任務處理:**基于進程和基于線程**。 * 基于進程的多任務處理是程序的并發執行。 * 基于線程的多任務處理是同一程序的片段的并發執行。 多線程程序包含可以同時運行的兩個或多個部分。這樣的程序中的每個部分稱為一個線程,每個線程定義了一個單獨的執行路徑。 本教程假設您使用的是 Linux 操作系統,我們要使用 POSIX 編寫多線程 C++ 程序。POSIX Threads 或 Pthreads 提供的 API 可在多種類 Unix POSIX 系統上可用,比如 FreeBSD、NetBSD、GNU/Linux、Mac OS X 和 Solaris。 **創建線程:** 下面的程序,我們可以用它來創建一個 POSIX 線程: ~~~ #include <pthread.h> pthread_create (thread, attr, start_routine, arg) 復制代碼 ~~~ 在這里,**pthread\_create** 創建一個新的線程,并讓它可執行。下面是關于參數的說明: | 參數 | 描述 | | --- | --- | | thread | 指向線程標識符指針。 | | attr | 一個不透明的屬性對象,可以被用來設置線程屬性。您可以指定線程屬性對象,也可以使用默認值 NULL。 | | start\_routine | 線程運行函數起始地址,一旦線程被創建就會執行。 | | arg | 運行函數的參數。它必須通過把引用作為指針強制轉換為 void 類型進行傳遞。如果沒有傳遞參數,則使用 NULL。 | 創建線程成功時,函數返回 0,若返回值不為 0 則說明創建線程失敗。 **終止線程:** 使用下面的程序,我們可以用它來終止一個 POSIX 線程: ~~~ #include <pthread.h> pthread_exit (status) 復制代碼 ~~~ 在這里,**pthread\_exit** 用于顯式地退出一個線程。通常情況下,pthread\_exit() 函數是在線程完成工作后無需繼續存在時被調用。 如果 main() 是在它所創建的線程之前結束,并通過 pthread\_exit() 退出,那么其他線程將繼續執行。否則,它們將在 main() 結束時自動被終止。 ~~~ //定義一個線程數量宏 #define NUM_THREADS 5 //線程的運行函數 void *logD(void * args) { int threadID = *((int*)args); cout << "線程執行了" << threadID << endl; } void test29() { //定義線程的 ID 變量,多個變量使用數組 pthread_t tids[NUM_THREADS]; for (int i = 0; i < NUM_THREADS; ++i) { //參數依次是:創建的線程 id,線程參數,調用的函數,傳入的參數函數 int ptc = pthread_create(&tids[i],NULL,logD,(void*)&(i)); if(0!=ptc){ cout << "pthread_create error:error code :" << ptc << endl; } } //等線程執行完畢后在釋放線程 pthread_exit(NULL); } 復制代碼 ~~~ > **輸出:** > > 線程執行了線程執行了5 線程執行了5 5 線程執行了5 線程執行了5
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看