Sie scheinen "Thread" und "Warteschlange" zu verwenden, wie sie das gleiche sind. Sie sind nicht. Eine Warteschlange ist eine Abstraktion auf höherer Ebene, die unter Verwendung von 1 oder mehr tatsächlichen Threads implementiert werden kann.
Die Verwendung von dispatch_get_global_queue
gibt Ihnen wahrscheinlich jedes Mal eine andere Warteschlange. Das erste, was Sie tun müssen, ist, eine einzige Warteschlange zu erstellen, die Sie verwenden, anstatt jedes Mal nach einer neuen Warteschlange zu fragen. Verwenden Sie dispatch_queue_create
, um eine einzelne Warteschlange zu erstellen. Speichern Sie einen Verweis darauf in einem geeigneten Bereich, damit Sie ihn überall dort referenzieren können, wo Sie ihn benötigen.
Jetzt, da Sie nur eine einzige Warteschlange haben, müssen Sie entscheiden, ob die Warteschlange eine gleichzeitige Warteschlange oder eine serielle Warteschlange sein soll. Eine serielle Warteschlange verwendet nur 1 Thread, während eine gleichzeitige Warteschlange mehrere Threads verwenden kann. Sie erhalten die gewünschte Warteschlange, indem Sie den richtigen Wert an den attr
Parameter der dispatch_queue_create
Funktion übergeben.
Objective-C:
Erstellen der Warteschlange:
dispatch_queue_t myQueue = dispatch_queue_create(@"my_global_queue", DISPATCH_QUEUE_CONCURRENT); // or use DISPATCH_QUEUE_SERIAL
die Warteschlange Verwendung:
dispatch_async(myQueue, ^{
// code
});
Swift:
die Warteschlange erstellen:
let myQueue = DispatchQueue(label: "my_global_queue") // serial
oder:
let myQueue = DispatchQueue(label: "my_global_queue", attributes: .concurrent) // concurrent
die Warteschlange verwenden:
myQueue.async {
// code
}
Großer Dank !!! Ich habe es mit meinem Code gemacht –