Note that there are some explanatory texts on larger screens.

plurals
  1. POHow Do I Make Sure That Dispatch Notify is Called at the Right Time
    primarykey
    data
    text
    <p>I have scenario where I have to iterate over a list of account numbers, go and fetch the detail information for these accounts and then pass the aggregated information to completionBlock. In order to facilitate this I'm using dispatch_group_* methods. Unfortunately, the completion block is being called <em>before</em> the group has finished even though I have explicitly called </p> <p><code>dispatch_group_wait(_imfDispatchGroup, DISPATCH_TIME_FOREVER);</code></p> <p>Example of console log (original):</p> <blockquote> <p>2012-10-28 13:58:46.722 ThreadingHell[81909:303] inside loginResponse</p> <p>2012-10-28 13:58:46.724 ThreadingHell[81909:303] inside account loop for obj: account1</p> <p>2012-10-28 13:58:46.724 ThreadingHell[81909:303] inside account loop for obj: account2</p> <p>2012-10-28 13:58:46.724 ThreadingHell[81909:1b03] inside details: L0i6kRVzGG details</p> <p>2012-10-28 13:58:46.724 ThreadingHell[81909:1a03] inside details: SE0QjhO8Hh details</p> <p>2012-10-28 13:58:46.724 ThreadingHell[81909:303] inside account loop for obj: account3</p> <p>2012-10-28 13:58:46.725 ThreadingHell[81909:1a03] inside completion for __66-[ModelManager getAccountDetailsForAccountNumber:completionBlock:]_block_invoke_015</p> <p>2012-10-28 13:58:46.725 ThreadingHell[81909:1803] inside details: 9SsGYOX3u5 details</p> <p>2012-10-28 13:58:46.725 ThreadingHell[81909:1a03] details are found for account</p> <p>2012-10-28 13:58:46.725 ThreadingHell[81909:303] inside account loop for obj: account4</p> <p>2012-10-28 13:58:46.725 ThreadingHell[81909:1b03] inside completion for __66-[ModelManager getAccountDetailsForAccountNumber:completionBlock:]_block_invoke_015</p> <p>2012-10-28 13:58:46.726 ThreadingHell[81909:1803] inside completion for __66-[ModelManager getAccountDetailsForAccountNumber:completionBlock:]_block_invoke_015</p> <p>2012-10-28 13:58:46.726 ThreadingHell[81909:303] inside account loop for obj: acount5</p> <p>2012-10-28 13:58:46.726 ThreadingHell[81909:1a03] success account looop</p> <p>2012-10-28 13:58:46.726 ThreadingHell[81909:1b03] details are found for account</p> <p>2012-10-28 13:58:46.726 ThreadingHell[81909:2303] inside details: wSXis5bIVs details</p> <p>2012-10-28 13:58:46.728 ThreadingHell[81909:1803] details are found for account</p> <p>2012-10-28 13:58:46.728 ThreadingHell[81909:2403] inside details: SrIfbzBLr7 details</p> <p>2012-10-28 13:58:46.728 ThreadingHell[81909:1a03] current instance of accountDetails: ( "L0i6kRVzGG details" )</p> <p>2012-10-28 13:58:46.728 ThreadingHell[81909:1803] success account looop</p> <p>2012-10-28 13:58:46.728 ThreadingHell[81909:1b03] success account looop</p> <p>2012-10-28 13:58:46.729 ThreadingHell[81909:2403] inside completion for __66-[ModelManager getAccountDetailsForAccountNumber:completionBlock:]_block_invoke_015</p> <p>2012-10-28 13:58:46.729 ThreadingHell[81909:303] !!!!!!!!!! about to call completion block. This should be last</p> <p>2012-10-28 13:58:46.729 ThreadingHell[81909:2303] inside completion for __66-[ModelManager getAccountDetailsForAccountNumber:completionBlock:]_block_invoke_015</p> <p>2012-10-28 13:58:46.730 ThreadingHell[81909:1803] current instance of accountDetails: ( "L0i6kRVzGG details", "9SsGYOX3u5 details" )</p> <p>2012-10-28 13:58:46.730 ThreadingHell[81909:1b03] current instance of accountDetails: ( "L0i6kRVzGG details", "9SsGYOX3u5 details", "SE0QjhO8Hh details" )</p> <p>2012-10-28 13:58:46.731 ThreadingHell[81909:2403] details are found for account</p> <p>2012-10-28 13:58:46.731 ThreadingHell[81909:2303] details are found for account</p> <p>2012-10-28 13:58:46.732 ThreadingHell[81909:2403] success account looop</p> <p>2012-10-28 13:58:46.731 ThreadingHell[81909:303] obj: { }</p> <p>2012-10-28 13:58:46.732 ThreadingHell[81909:2303] success account looop</p> <p>2012-10-28 13:58:46.732 ThreadingHell[81909:303] error: (null)</p> <p>2012-10-28 13:58:46.732 ThreadingHell[81909:2403] current instance of accountDetails: ( "L0i6kRVzGG details", "9SsGYOX3u5 details", "SE0QjhO8Hh details", "wSXis5bIVs details" )</p> </blockquote> <p>// UPDATED LOG from latest commit [https://github.com/kwylez/ThreadingHell/tree/80cc29fab142b4dc1f386df747c5142b28e2dd84]</p> <blockquote> <p>2012-10-28 16:32:38.984 ThreadingHell[83171:303] inside loginResponse 2012-10-28 16:32:38.987 ThreadingHell[83171:303] inside account loop for obj: account1 2012-10-28 16:32:38.987 ThreadingHell[83171:303] inside account loop for obj: account2 2012-10-28 16:32:38.987 ThreadingHell[83171:1b03] inside details: CP3ioYdvXp details 2012-10-28 16:32:38.987 ThreadingHell[83171:303] inside account loop for obj: account3 2012-10-28 16:32:38.987 ThreadingHell[83171:1a03] inside details: 6k635XoJOV details 2012-10-28 16:32:38.987 ThreadingHell[83171:1b03] inside completion for __66-[ModelManager getAccountDetailsForAccountNumber:completionBlock:]_block_invoke_0 2012-10-28 16:32:38.988 ThreadingHell[83171:1a03] inside completion for __66-[ModelManager getAccountDetailsForAccountNumber:completionBlock:]_block_invoke_0 2012-10-28 16:32:38.988 ThreadingHell[83171:1b03] details are found for account 2012-10-28 16:32:38.988 ThreadingHell[83171:303] inside account loop for obj: account4 2012-10-28 16:32:38.988 ThreadingHell[83171:1803] inside details: 2TjGF1fdaZ details 2012-10-28 16:32:38.989 ThreadingHell[83171:1a03] details are found for account 2012-10-28 16:32:38.990 ThreadingHell[83171:1b03] success account looop 2012-10-28 16:32:38.991 ThreadingHell[83171:1b03] current instance of accountDetails: ( "CP3ioYdvXp details" ) 2012-10-28 16:32:38.990 ThreadingHell[83171:303] inside account loop for obj: acount5 2012-10-28 16:32:38.990 ThreadingHell[83171:2303] inside details: 0YiuX9gHsu details 2012-10-28 16:32:38.990 ThreadingHell[83171:1a03] success account looop 2012-10-28 16:32:38.990 ThreadingHell[83171:1803] inside completion for __66-[ModelManager getAccountDetailsForAccountNumber:completionBlock:]_block_invoke_0 2012-10-28 16:32:38.992 ThreadingHell[83171:2303] inside completion for __66-[ModelManager getAccountDetailsForAccountNumber:completionBlock:]_block_invoke_0 2012-10-28 16:32:38.992 ThreadingHell[83171:1b03] inside details: 9RcyOfjRa5 details 2012-10-28 16:32:38.992 ThreadingHell[83171:1a03] current instance of accountDetails: ( "CP3ioYdvXp details", "6k635XoJOV details" ) 2012-10-28 16:32:38.992 ThreadingHell[83171:1803] details are found for account 2012-10-28 16:32:39.005 ThreadingHell[83171:1803] success account looop 2012-10-28 16:32:39.005 ThreadingHell[83171:1b03] inside completion for __66-[ModelManager getAccountDetailsForAccountNumber:completionBlock:]_block_invoke_0 2012-10-28 16:32:39.005 ThreadingHell[83171:2303] details are found for account 2012-10-28 16:32:39.006 ThreadingHell[83171:1b03] details are found for account 2012-10-28 16:32:39.006 ThreadingHell[83171:2303] success account looop 2012-10-28 16:32:39.006 ThreadingHell[83171:1803] current instance of accountDetails: ( "CP3ioYdvXp details", "6k635XoJOV details", "2TjGF1fdaZ details" ) 2012-10-28 16:32:39.007 ThreadingHell[83171:1b03] success account looop 2012-10-28 16:32:39.007 ThreadingHell[83171:2303] current instance of accountDetails: ( "CP3ioYdvXp details", "6k635XoJOV details", "2TjGF1fdaZ details", "0YiuX9gHsu details" ) 2012-10-28 16:32:39.008 ThreadingHell[83171:1b03] current instance of accountDetails: ( "CP3ioYdvXp details", "6k635XoJOV details", "2TjGF1fdaZ details", "0YiuX9gHsu details", "9RcyOfjRa5 details" ) 2012-10-28 16:32:39.008 ThreadingHell[83171:303] !!!!!!!!!! about to call completion block. This should be last 2012-10-28 16:32:39.009 ThreadingHell[83171:303] obj: { } 2012-10-28 16:32:39.009 ThreadingHell[83171:303] error: (null)</p> </blockquote> <p>What "order of operation" have I missed?</p> <p>Here is link to example project on github (code was too much to put here): </p> <p><a href="https://github.com/kwylez/ThreadingHell" rel="nofollow">https://github.com/kwylez/ThreadingHell</a></p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload