In the following GCD code for concurrent threading which is better and why?
===

i am few weeks new to GCD so please clear my doubt.
i want to start many threads at a time so i used following codes but i am confused that should i make a single queue and put many operations in it or should make many queues with single operation.

Which is optimized one?
And one more thing is there any limit of number of threads in GCD?



    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
        for(int INDEX = 0; INDEX < 5; INDEX++) {
            dispatch_async(queue, ^{
                /*some code*/        
            }); 
        }


          OR


    

    for(int INDEX = 0; INDEX < 5; INDEX++) {
            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
                /*some code*/        
            }); 
        }