![](/img/trans.png)
[英]GCD DISPATCH_QUEUE_SERIAL what priority is it going to run on?
[英]Create a high priority serial dispatch queue with GCD
如何創建以高優先級運行的自定義串行隊列?
現在我正在使用myQueue = dispatch_queue_create("com.MyApp.MyQueue", NULL);
但這似乎不允許設置優先權?
創建一個串行隊列,然后使用dispatch_set_target_queue()
將其目標隊列設置為高優先級隊列。
這是如何做:
dispatch_set_target_queue(myQueue, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0));
現在myQueue
應該以高優先級順序運行。 如果你想了解更多,這是另一個答案 。
dispatch_queue_attr_make_with_qos_class
函數可能是新的,因為已發布接受的答案,但類似於:
dispatch_queue_attr_t priorityAttribute = dispatch_queue_attr_make_with_qos_class(
DISPATCH_QUEUE_SERIAL, QOS_CLASS_USER_INITIATED, -1
);
myQueue = dispatch_queue_create("com.MyApp.MyQueue", priorityAttribute);
可以給隊列一個高優先級('服務質量')。 有一個更高的QOS類,但QOS_CLASS_USER_INITIATED
相當於DISPATCH_QUEUE_PRIORITY_HIGH
。
是否要求您擁有自定義隊列? 如果沒有,您可以查看將塊分派給高優先級全局隊列,您可以使用以下命令檢索該隊列:
dispatch_queue_t q = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0)
請記住,這是全局隊列,因此它可能會影響其他並發操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.