從我在網上閱讀并在 中看到的struct.h,cpu_set_t是一個包含位掩碼的結構,其中每一位代表執行緒/行程可以使用的 CPU。
這是它的定義方式:
typedef struct
{ __CPU_BITTYPE __bits[ CPU_SETSIZE / __CPU_BITS ];
} cpu_set_t
__CPU_BITTYPE是一個unsigned long int。
上面的cpu_set_t定義不是意味著結構包含一個名為__bitssize的陣列CPU_SETSIZE / __CPU_BITS嗎?我在這里缺少什么?它如何解釋為位域?
uj5u.com熱心網友回復:
是的,它是一個陣列。這是為了考慮可能存在比整數中的位數更多的 CPU。
CPU_SETSIZE是 CPU 集中的 CPU 總數,__CPU_BITS是每個整數中用于保存位掩碼的位數。要訪問特定 CPU 的位,您需要將 CPU 編號除以__CPU_BITS獲得陣列索引,然后使用模數作為左移來獲得整數中的該位。幾乎可以肯定有一個宏可以執行此操作。
當您無法將元素數量限制為整數型別的位大小時,這通常是在 C 中實作位陣列的方式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/315034.html
