ObjFW  Check-in [eb827e8f21]

Overview
Comment:Use Sleep(0) instead of yield() on Win32.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: eb827e8f21295fe42a772dc4047c00fdb4318ff6c97741048e23182124e4797d
User & Date: js on 2011-03-17 20:33:57
Other Links: manifest | tags
Context
2011-03-21
12:43
Don't depend on objc/objc.h for compiler checks. check-in: 4c598e07ad user: js tags: trunk
2011-03-17
20:33
Use Sleep(0) instead of yield() on Win32. check-in: eb827e8f21 user: js tags: trunk
2011-03-11
16:47
Get rid of warnings when using latest clang. check-in: 36c4b260aa user: js tags: trunk
Changes

Modified src/threading.h from [33ef5dc30b] to [ad9f8119e0].

307
308
309
310
311
312
313
314
315
316
317
318
319
320
321

322



323
324
325
326
327
328
329
#endif
}

static OF_INLINE BOOL
of_spinlock_lock(of_spinlock_t *s)
{
#if defined(OF_ATOMIC_OPS)
# ifdef OF_HAVE_SCHED_YIELD
	int i;

	for (i = 0; i < OF_SPINCOUNT; i++)
		if (of_spinlock_trylock(s))
			return YES;

	while (!of_spinlock_trylock(s))

		sched_yield();



# else
	while (!of_spinlock_trylock(s));
# endif

	return YES;
#elif defined(OF_HAVE_PTHREAD_SPINLOCKS)
	return (pthread_spin_lock(s) ? NO : YES);







|







>

>
>
>







307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
#endif
}

static OF_INLINE BOOL
of_spinlock_lock(of_spinlock_t *s)
{
#if defined(OF_ATOMIC_OPS)
# if defined(OF_HAVE_SCHED_YIELD) || defined(_WIN32)
	int i;

	for (i = 0; i < OF_SPINCOUNT; i++)
		if (of_spinlock_trylock(s))
			return YES;

	while (!of_spinlock_trylock(s))
#  ifndef _WIN32
		sched_yield();
#  else
		Sleep(0);
#  endif
# else
	while (!of_spinlock_trylock(s));
# endif

	return YES;
#elif defined(OF_HAVE_PTHREAD_SPINLOCKS)
	return (pthread_spin_lock(s) ? NO : YES);