3 #include <dispatch/dispatch.h>
7 doing_the_work_1(void *in)
14 submit_work_1a(void *in)
16 dispatch_queue_t *work_performer_1 = (dispatch_queue_t*) in;
17 dispatch_async_f (*work_performer_1, NULL, doing_the_work_1);
18 dispatch_async_f (*work_performer_1, NULL, doing_the_work_1);
22 submit_work_1b(void *in)
24 dispatch_queue_t *work_performer_1 = (dispatch_queue_t*) in;
25 dispatch_async_f (*work_performer_1, NULL, doing_the_work_1);
26 dispatch_async_f (*work_performer_1, NULL, doing_the_work_1);
32 doing_the_work_2(void *in)
39 submit_work_2(void *in)
41 dispatch_queue_t *work_performer_2 = (dispatch_queue_t*) in;
45 dispatch_async_f (*work_performer_2, NULL, doing_the_work_2);
46 dispatch_async_f (*work_performer_2, NULL, doing_the_work_2);
52 doing_the_work_3(void *in)
59 submit_work_3(void *in)
61 dispatch_queue_t *work_performer_3 = (dispatch_queue_t*) in;
62 dispatch_async_f (*work_performer_3, NULL, doing_the_work_3);
63 dispatch_async_f (*work_performer_3, NULL, doing_the_work_3);
64 dispatch_async_f (*work_performer_3, NULL, doing_the_work_3);
65 dispatch_async_f (*work_performer_3, NULL, doing_the_work_3);
78 dispatch_queue_t work_submittor_1 = dispatch_queue_create ("com.apple.work_submittor_1", DISPATCH_QUEUE_SERIAL);
79 dispatch_queue_t work_submittor_2 = dispatch_queue_create ("com.apple.work_submittor_and_quit_2", DISPATCH_QUEUE_SERIAL);
80 dispatch_queue_t work_submittor_3 = dispatch_queue_create ("com.apple.work_submittor_3", DISPATCH_QUEUE_SERIAL);
82 dispatch_queue_t work_performer_1 = dispatch_queue_create ("com.apple.work_performer_1", DISPATCH_QUEUE_SERIAL);
83 dispatch_queue_t work_performer_2 = dispatch_queue_create ("com.apple.work_performer_2", DISPATCH_QUEUE_SERIAL);
85 dispatch_queue_t work_performer_3 = dispatch_queue_create ("com.apple.work_performer_3", DISPATCH_QUEUE_CONCURRENT);
87 dispatch_async_f (work_submittor_1, (void*) &work_performer_1, submit_work_1a);
88 dispatch_async_f (work_submittor_1, (void*) &work_performer_1, submit_work_1b);
90 dispatch_async_f (work_submittor_2, (void*) &work_performer_2, submit_work_2);
92 dispatch_async_f (work_submittor_3, (void*) &work_performer_3, submit_work_3);
95 // Spin up threads with each of the different libdispatch QoS values.
97 dispatch_async (dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0), ^{
98 pthread_setname_np ("user initiated QoS");
102 dispatch_async (dispatch_get_global_queue(QOS_CLASS_USER_INTERACTIVE, 0), ^{
103 pthread_setname_np ("user interactive QoS");
107 dispatch_async (dispatch_get_global_queue(QOS_CLASS_DEFAULT, 0), ^{
108 pthread_setname_np ("default QoS");
112 dispatch_async (dispatch_get_global_queue(QOS_CLASS_UTILITY, 0), ^{
113 pthread_setname_np ("utility QoS");
117 dispatch_async (dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0), ^{
118 pthread_setname_np ("background QoS");
122 dispatch_async (dispatch_get_global_queue(QOS_CLASS_UNSPECIFIED, 0), ^{
123 pthread_setname_np ("unspecified QoS");