X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=util%2Ftstflock.c;h=ec26477186abd323536663fabc80b5e94da99062;hb=7f417885b90eff084fc83be569b98e30dad4a056;hp=0d0be352d91dccd1ad12c15e876816a204cddcef;hpb=23c386f2b4511acfdb389adc7f48f15d284c639c;p=idzebra-moved-to-github.git diff --git a/util/tstflock.c b/util/tstflock.c index 0d0be35..ec26477 100644 --- a/util/tstflock.c +++ b/util/tstflock.c @@ -2,21 +2,37 @@ * Copyright (C) 1995-2005, Index Data ApS * See the file LICENSE for details. * - * $Id: tstflock.c,v 1.1 2006-03-23 09:15:25 adam Exp $ + * $Id: tstflock.c,v 1.6 2006-05-10 08:13:46 adam Exp $ */ #include #if YAZ_POSIX_THREADS #include #endif +#ifdef WIN32 +#include +#include +#endif #include +#if HAVE_UNISTD_H #include +#endif #include static char seq[20]; static char *seqp = seq; +#define NUM_THREADS 2 + +static void small_sleep() +{ +#ifdef WIN32 + Sleep(50); +#else + sleep(1); +#endif +} void *run_func(void *arg) { int i; @@ -26,7 +42,7 @@ void *run_func(void *arg) zebra_lock_w(lh); *seqp++ = 'L'; - sleep(1); + small_sleep(); *seqp++ = 'U'; zebra_unlock(lh); @@ -35,29 +51,69 @@ void *run_func(void *arg) return 0; } -static void tst1() +#ifdef WIN32 +DWORD WINAPI ThreadProc(void *p) { - pthread_t child_thread[2]; - int id1 = 1; - int id2 = 2; - pthread_create(&child_thread[0], 0 /* attr */, run_func, &id1); - pthread_create(&child_thread[1], 0 /* attr */, run_func, &id2); - pthread_join(child_thread[0], 0); - pthread_join(child_thread[1], 0); - *seqp++ = '\0'; + run_func(p); + return 0; } +static void tst_win32() +{ + HANDLE handles[NUM_THREADS]; + DWORD dwThreadId[NUM_THREADS]; + int i, id[NUM_THREADS]; + + for (i = 0; i