<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 功能強大 支持多語言、二開方便! 廣告
                [TOC] 在頭文件 threads.h 中,定義和聲明了支持多線程的宏、類型和函數。所有直接與線程相關的標識符,均以前綴 thrd\_ 作為開頭。例如,thrd\_t 是一個對象類型,它標識了一個線程。 函數 thrd\_create()用于創建并開始執行一個新線程。函數 thrd\_create()的其中一個參數為在新線程中需要被執行的函數 thrd\_create()的其中一個參數為在新線程中需要被執行的函數。thrd\_create()的完整原型是: ~~~ int thrd_create(thrd_t *thr, thrd_start_t func, void *arg); ~~~ 參數 func 是一個指針,它指向在新線程需要被執行的函數,而 void 指針 arg 用于向該函數傳遞參數。換句話說,新線程將執行函數調用 func(arg)。 參數 func 的類型為 thrd\_start\_t,它被定義為 int(\*)(void\*)(這是一個函數指針,指向一個 void 指針作為其參數并返回一個 int 值的函數),因此,該線程執行的函數返回一個 int 類型的值。 程序在后續過程中可以通過調用函數 thread\_join()獲得這個 int 類型的返回值(必要時,需等待該線程執行完)。 如果一個線程啟動成功,函數 thread\_create()將新線程寫入一個對象進行標識,并通過參數 thr 指向該對象,然后返回宏值 thread\_success。 在大多數情況下,后續的其他操作均依賴于該線程的執行結果,并且只有當該線程完成后,才能執行其他操作。函數 thread\_join()用于確保一個線程已完成。它的原型是: ~~~ int thrd_join(thrd_t thr, int *result); ~~~ 調用 thread\_join()的線程會被阻塞,直到通過 thr 標識的線程執行完成,這里“阻塞”(block)指的是:線程會在調用 thread\_join()的位置停留必要的時間。然后,thread\_join()將線程 thr 中執行函數的返回值寫入指針 result 所引用的 int 變量中,假設 result 不是一個空指針。最后,thread\_join()釋放屬于線程 thr 的所有資源。 如果程序邏輯上并不需要等待線程 thr 結束,則應該調用以下函數: int thrd\_detach(thrd\_t thr); thrd\_detach()使得當線程 thr 執行完成后,自動釋放線程占用的所有資源。一旦一個線程執行了分離操作(調用 thrd\_detach()),將不用程序等待其結束,程序也不會獲得該線程執行函數的返回值。對于每個創建的線程,調用 thread\_join()或 thread\_detach()不得超過一次。 在例 1 中的程序展示了使用并行操作處理數組的一種方式。各個線程先自行處理數組的各部分,然后將它們的處理結果組合在一起。該程序僅需計算一個數字序列的總和。 函數 sum()首先根據創建線程的最大數量確定劃分數組所得的各組元素的最大數量,然后調用遞歸輔助函數 parallel\_sum()。 函數 parallel\_sum()將數組平均分為兩半,將其中的一半交給一個新線程處理,同時調用自身來處理另一半數組。如該例所示,一個線程函數需要多個參數,這些參數通常采用結構進行封裝
                  <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>

                              哎呀哎呀视频在线观看