当前位置:网站首页>B_QuRT_User_Guide(19)

B_QuRT_User_Guide(19)

2022-06-11 03:00:00 weixin_38498942

12 屏障

線程使用屏障在程序中的特定點同步它們的執行。

當一個屏障被初始化時,它被分配一個用戶指定的整數值。 此值指示要在屏障上同步的線程數。

當線程在屏障上等待時,它會在屏障上掛起:

  • 如果等待屏障的線程總數小於屏障的分配值,則不會發生其他操作。
  • 如果等待屏障的線程總數等於屏障的分配值,則喚醒當前等待屏障的所有線程,允許它們越過屏障執行。

在其等待線程被喚醒後,屏障會自動重置,並且可以在程序中再次使用,而無需重新初始化。
屏障是支持以下操作的共享對象:

  • qurt_barrier_destroy()
  • qurt_barrier_init()
  • qurt_barrier_wait()
  • Data Types

12.1 qurt_barrier_destroy()

12.1.1 功能文檔

12.1.1.1 int qurt_barrier_destroy ( qurt_barrier_t ∗ barrier )

破壞指定的屏障。

注意:屏障不再使用時必須銷毀。  不這樣做會導致 QuRT 內核中的資源泄漏。

屏障仍在使用時不得破壞。 如果發生這種情况,則 QuRT 的行為是未定義的。

相關數據類型
qurt_barrier_t

參數

inbarrier指向要銷毀的屏障對象的指針。

返回值
未使用的整數值。

依賴關系
None.

12.2 qurt_barrier_init()

12.2.1 功能文檔

12.2.1.1 int qurt_barrier_init ( qurt_barrier_t ∗ barrier, unsigned int threads_total )

初始化屏障對象。

相關數據類型
qurt_barrier_t

參數

outbarrier指向要初始化的屏障對象的指針。
inthreads_total要在屏障上同步的線程總數。

返回值
未使用的整數值。

依賴關系
None.

12.3 qurt_barrier_wait()

12.3.1 功能文檔

12.3.1.1 int qurt_barrier_wait ( qurt_barrier_t ∗ barrier )

等待在屏障上。
在指定的屏障上掛起當前線程。
函數返回值指示線程是否是最後一個在屏障上同步的線程。 當線程在屏障上等待時,它會在屏障上掛起:

  • 如果等待屏障的線程總數小於分配的屏障值,則不會發生其他操作。
  • 如果等待屏障的線程總數等於分配的屏障值,則喚醒當前等待屏障的所有線程,允許它們越過屏障執行。
注意:在其等待線程被喚醒後,屏障會自動重置,可以在程序中再次使用,無需重新初始化。

相關數據類型
qurt_barrier_t

參數

inbarrier指向要等待的屏障對象的指針。

返回值
QURT_BARRIER_OTHER – 當前線程從屏障喚醒。
QURT_BARRIER_SERIAL_THREAD – 當前線程是屏障的最後調用者。

依賴關系
None.

12.4 數據類型

本節介紹屏障服務的數據類型。

  • 障礙在QuRT 中錶示為qurt_barrier_t 類型的對象。

12.4.1 定義文檔

12.4.1.1 #define QURT_BARRIER_SERIAL_THREAD 1

串行線程。

12.4.1.2 #define QURT_BARRIER_OTHER 0

其他。

12.4.2 數據結構文檔

12.4.2.1 union qurt_barrier_t

QuRT 屏障類型。

原网站

版权声明
本文为[weixin_38498942]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/162/202206110238526848.html