簡體   English   中英

使用GCD創建高優先級串行調度隊列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM