What exactly is GCD overcommit and is it dangerous

1.1k Views Asked by At

I've been working on some code recently where I want to ensure that certain tasks run sequentially always execute on the same thread.

As an experiment to get a feel for how this would work I created my own thread using this example Thread Example

My code works fine in that I call a method on the global queue then I enqueue an operation on my Custom Thread.

 func currentQueueName() -> String? {
        let name = __dispatch_queue_get_label(nil)
        return String(cString: name, encoding: .utf8)
    }


DispatchQueue.global().async {
            print(self.currentQueueName())
            myThread.enqueue {
                print(self.currentQueueName())
                //prints "com.apple.root.default-qos.overcommit"
                for i in 1...100 {
                    print(i)
                }
            }
        }

Whenever I print out the current thread during my Custom Thread Execution the thread name says.

("com.apple.root.default-qos.overcommit")

I don't get any errors or crashes.

1) What exactly does this over commit mean?

2) How have I caused it by using my own thread?

3) Is it dangerous to be seeing this message in production code?

4) If it is dangerous how can I use my Custom Thread safely

Update

After reading a post on Swift forum I'm beginning to think that over commit queue refers to any thread that isn't from Dispatch Queue Global.

I'm still not 100% certain though.

0

There are 0 best solutions below