Static variables access from different threads

Discussion in 'Mac Programming' started by satyam90, Jan 19, 2009.

  1. satyam90 macrumors regular


    Jul 30, 2007
    Bangalore, India
    I am using Cocoa frame work with Obj C programming. I have a class like following:
    @interface ClassA: NSObject
    +(int) initCount;
    +(void) initialize;
    #import "ClassA.h"
    static int count;
    @implementation ClassA
    -(id) init {
        self = [super init];
        count++; //some operation on count variable.
        return self;
    +(int) initCount {
        return count;
    +(void) initialize {
        count = 0;
      count = newValue;
      id ret = [[[self alloc] init] autorelease];
      return ret;

    Now the ClassA's method "createNewObject" is being called from different threads. Now how to protect the static variable "count" being over written/read by threads at a time. I mean, how to prevent the access of "count" by different threads simultaneously.

    I tried to use "NSLock", but throwing exception. Can somebody suggest me how to achieve this?
  2. Krevnik macrumors 68040


    Sep 8, 2003
    Have you checked to see what the exception message is? That will usually tell you why it was thrown. It may be just that you are using the lock improperly (which is hard to do, I know).

    Since you are dealing with a simple integer though, you should be able to just use the atomic increment/decrement functions in: <CarbonCore/DriverSynchronization.h>

Share This Page