ObjFW  Check-in [20e1c0e24b]

Overview
Comment:Add -[tryLock] to OFMutex.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 20e1c0e24b1d882c161ccbb309a761661ef5dccef791b066d23a0f2502140450
User & Date: js on 2010-01-30 00:50:46
Other Links: manifest | tags
Context
2010-01-30
01:17
Change spinlock implementation, add fallbacks and move to threading.h. check-in: 921b158d17 user: js tags: trunk
00:50
Add -[tryLock] to OFMutex. check-in: 20e1c0e24b user: js tags: trunk
00:45
Define OF_ATOMIC_OPS if we don't have threads.
Without threads, we just don't care about atomicity.
check-in: 1823d543f3 user: js tags: trunk
Changes

Modified src/OFThread.h from [469fa957dd] to [24a798f944].

131
132
133
134
135
136
137








138
139
140
141
142
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150







+
+
+
+
+
+
+
+





+ mutex;

/**
 * Locks the mutex.
 */
- lock;

/**
 * Tries to lock the mutex and returns a boolean whether the mutex could be
 * acquired.
 *
 * \return A boolean whether the mutex could be acquired
 */
- (BOOL)tryLock;

/**
 * Unlocks the mutex.
 */
- unlock;
@end

Modified src/OFThread.m from [0701aeb932] to [acb2745598].

216
217
218
219
220
221
222





223
224
225
226
227
228
229
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234







+
+
+
+
+







- lock
{
	if (!of_mutex_lock(&mutex))
		@throw [OFMutexLockFailedException newWithClass: isa];

	return self;
}

- (BOOL)tryLock
{
	return of_mutex_trylock(&mutex);
}

- unlock
{
	if (!of_mutex_unlock(&mutex))
		@throw [OFMutexUnlockFailedException newWithClass: isa];

	return self;

Modified src/threading.h from [d9ecd3df92] to [118d170b8a].

112
113
114
115
116
117
118










119
120
121
122
123
124
125
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135







+
+
+
+
+
+
+
+
+
+







#if defined(OF_HAVE_PTHREADS)
	return (pthread_mutex_lock(mutex) ? NO : YES);
#elif defined(_WIN32)
	EnterCriticalSection(mutex);
	return YES;
#endif
}

static OF_INLINE BOOL
of_mutex_trylock(of_mutex_t *mutex)
{
#if defined(OF_HAVE_PTHREADS)
	return (pthread_mutex_trylock(mutex) ? NO : YES);
#elif defined(_WIN32)
	return (TryEnterCriticalSection(mutex) ? YES : NO);
#endif
}

static OF_INLINE BOOL
of_mutex_unlock(of_mutex_t *mutex)
{
#if defined(OF_HAVE_PTHREADS)
	return (pthread_mutex_unlock(mutex) ? NO : YES);
#elif defined(_WIN32)