Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8452749
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 10, 20262026-06-10T11:34:54+00:00 2026-06-10T11:34:54+00:00

I want to issue a notification when all 4 different threads have finished their

  • 0

I want to issue a notification when all 4 different threads have finished their work. I’m keeping count of the total threads and have a listener that does some work when the threads have finished.

Is the following a safe way to do this?

// ivars:
NSMutableArray *list;
OSSpinLock lock;

#define MAX_ALLOWED 4

- (void)someThreadedWork
{
    // Iterate thru 4 different items using gcd and update
    for (int x = 0; x < MAX_ALLOWED; ++x)
    {
        dispatch_async(some_queue, ^{
           // Do some work.. once done, 
           [self updateCount:ix];
        });
    }
}

- (void)updateCount:(NSInteger)newCount
    OSSpinLockLock(&lock);
    {
        [list addObject:[NSNumber numberWithInt:newCount]];

        if ([list count] == MAX_ALLOWED)
        {
            _allValuesUpdatedAt = [NSDate date];
        }
    }
    OSSpinLockUnlock(&lock);
}

- (void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object 
change:(NSDictionary*)change context:(void*)context 
{
    // When I get the 'allItemsUpdatedAt' event, I will perform some other work
}

- (id)init {
    if (self = [super init])
    {
        // there is a corresponding removeObserver in the dealloc
        list = [[NSMutableArray alloc] init];
        [anInstance addObserver:self 
                forKeyPath:@"allItemsUpdatedAt" 
                options:NSKeyValueObservingOptionNew 
                context:NULL];
    }
    return self;
}
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-10T11:34:56+00:00Added an answer on June 10, 2026 at 11:34 am

    HachiEthan’s comment about dispatch_async is exactly correct. If you use dispatch_group_async instead, then you don’t need any locking at all, nor do you have to keep track of the threads that are currently working. It’ll do all of this for you.

    See “Waiting on Groups of Queued Tasks” in the Concurrency Programming Guide for a faster, simpler, more robust, and less energy intensive approach to this problem. See also “Migrating Away from Threads” in the same document to learn how to convert thread-based systems to queue-based systems.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

The issue I have is that I want to parse strings in order, so
I want to issue a notification that stays in the status bar until I
I'm having the following issue - I want to traverse all the xml files
See here for my issue: http://jsfiddle.net/FvBqA/126/ My issue is that I want to be
I want to display a progress bar while doing some work, but that would
I want to make a local push notification with a sound that the user
So, I've an issue as such: I've written a service that has the notification
I want to issue multiple mysql commands with one mysql_query function. This is my
I want to issue a series of Command executions, but only when the prior
I want to solve this issue in query @ for Ex : id ip

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.