ftp.nice.ch/pub/next/developer/objc/threads/ThreadedApp.1.0.s.tar.gz#/ThreadedApp-1.0/CJRLock.h

This is CJRLock.h in view mode; [Download] [Up]

/*
 *  CJRLock  -- Foundation Kit-less NSLock, NSConditionLock
 *  Compatibile with Foundation Kit from EOF 1.1, which shipped with 
 *  NS3.3 Academic Bundle).
 *
 *  (c) 1997 Chris Roehrig <croehrig@House.ORG>
 *
 *  Doesn't implement timeout methods.
 *  Doesn't implement NSRecursiveLock.
 */

#import <objc/Object.h>
#import <mach/cthreads.h>

@protocol CJRLocking
- (void)lock;
- (void)unlock;
@end
 

/***************	CJRLock		***************/

@interface CJRLock:Object <CJRLocking> {
    @private
    mutex_t	mutex;
}

- (BOOL)tryLock;
    /* Returns YES iff lock acquired; returns immediately */

@end


/***************	CJRConditionLock		***************/


@interface CJRConditionLock:Object <CJRLocking> {
    @private
    mutex_t	mutex;    // lock to protect data
    volatile int	data;
    condition_t	cond;
}

- initWithCondition:(int)condition;
    // init & set condition variable
    
- (int)condition;

- (void)lockWhenCondition:(int)condition;
    // acquire lock when conditionVar == condition
    
- (BOOL)tryLock;
    /* Returns YES iff lock acquired; returns immediately */

- (BOOL)tryLockWhenCondition:(int)condition;
    // acquire lock when conditionVar == condition
    
- (void)unlockWithCondition:(int)condition;
    // release lock and update conditionVar
    
@end

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.