public inbox for pthreads-win32@sourceware.org
 help / color / mirror / Atom feed
* mingw and pthreads help !
@ 2001-04-30  9:57 Gabriel L Somlo
  2001-05-01  0:05 ` Ross Johnson
  0 siblings, 1 reply; 2+ messages in thread
From: Gabriel L Somlo @ 2001-04-30  9:57 UTC (permalink / raw)
  To: pthreads-win32

Hi,

I am trying to compile an example c-program using pthread rwlocks on
Windows, using mingw gcc-2.95.2, the crtdll version (the msvcrt version
gives me the exact same problem). When I finish compiling, after some
warnings, and try to execute the .exe file, I get a popup error window
which says the "gcc.dll" file could not be found (this only happens with
the pthreads program -- a simple hello-world program compiles and executes
fine).


Also, if I don't define _MSC_VER I get a parse error when including
pthread.h


Can anyone please help me figure out what I'm doing wrong ?

Thanks,

Gabriel



PS. Here's what I've done:

I've unpacked all the pthread-w32 dll's, libraries, and include files into
a directory named c:\pthrw32, which is also added to the path of the shell
program used to start mingw (mingw32.bat):


	REM
	REM ...<snip>
	REM
	PATH=c:\gcc-2.95.2-crtdll\bin;%PATH%
	REM add pthread dll directory to path variable
	PATH=c:\pthrw32;%PATH%

	REM start shell
	cmd.exe


This is what I did in the resulting command window on Win2K:


	E:\home\threads>gcc -D_REENTRANT -D_MSC_VER -O -Wall
-o thrtst thrtst.c -lpthreadw32 -Ic:\pthrw32 -Lc:\pthrw32
	In file included from thrtst.c:14:
	c:\pthrw32\pthread.h:1019: warning: `__except' redefined
	c:\gcc-2.95.2-crtdll\bin\..\lib\gcc-lib\i386-mingw32\2.95.2\..
\..\..\..\i386-mingw32\include\excpt.h:9: warning: this is the location
of the previous definition

	In file included from thrtst.c:14:
	c:\pthrw32\pthread.h:204: warning: ignoring pragma: )
	In file included from thrtst.c:14:
	c:\pthrw32\pthread.h:284: warning: ignoring pragma: )

	E:\home\threads>thrtst.exe

	< popup window with message saying that gcc.dll could not be found >


Here is the silly pthread_rwlock example I'm trying to compile:


/*
 *  thrtst.c
 *
 *  How to compile:
 *
 *  On Solaris:
 *  gcc  -D_REENTRANT -DSOL_SETCONC=4 -O -Wall -o thrtst thrtst.c -lpthread
 *
 *  On Linux:
 *  gcc  -D_REENTRANT -D_XOPEN_SOURCE=500 -O -Wall -o thrtst thrtst.c -lpthread
 *
 *  On Windows (mingw32 - gcc-2.95.2-crtdll):
 *  gcc  -D_REENTRANT -D_MSC_VER -O -Wall -o thrtst thrtst.c -lpthreadw32 \
 *  -Ic:\pthrw32 -Lc:\pthrw32
 */


#include <stddef.h>
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>


pthread_rwlock_t rwlock;


void *reader( void *arg ) {

  unsigned long int i;

  pthread_rwlock_rdlock( &rwlock );
  fprintf( stderr, "--> %s starting to read\n", (char *)arg );

  for( i = 0; i < 50000000; ++i );	/* reading delay */

  fprintf( stderr, "<-- %s done reading\n", (char *)arg );
  pthread_rwlock_unlock( &rwlock );

  return NULL;

} /* reader */


void *writer( void *arg ) {

  unsigned long int i;

  pthread_rwlock_wrlock( &rwlock );
  fprintf( stderr, "==> %s starting to write\n", (char *)arg );

  for( i = 0; i < 50000000; ++i );	/* writing delay */

  fprintf( stderr, "<== %s done writing\n", (char *)arg );
  pthread_rwlock_unlock( &rwlock );

  return NULL;

} /* writer */


int main( void ) {

  pthread_t r1, r2, w1, r3, w2, r4, wa, ra, wb, rb, wc, rc, wd, rd;
  unsigned long int i;

#ifdef SOL_SETCONC    /* set concurrency on Solaris machines */
  pthread_setconcurrency( SOL_SETCONC );
#endif

  pthread_rwlock_init(&rwlock, NULL);

  pthread_create(&r1, NULL, reader, "reader_1");

  for(i = 0 ; i < 500; ++i);	/* delay */

  pthread_create(&r2, NULL, reader, "reader_2");

  for(i = 0; i < 500; ++i);	/* delay */

  pthread_create(&w1, NULL, writer, "writer_1");

  for(i = 0; i < 500; ++i);	/* delay */

  pthread_create(&r3, NULL, reader, "reader_3");

  for(i = 0; i < 500; ++i);	/* delay */

  pthread_create(&w2, NULL, writer, "writer_2");

  for(i = 0; i < 500; ++i);	/* delay */

  pthread_create(&r4, NULL, reader, "reader_4");

  pthread_create(&ra, NULL, reader, "reader_a");
  pthread_create(&wa, NULL, writer, "writer_a");

  pthread_create(&rb, NULL, reader, "reader_b");
  pthread_create(&wb, NULL, writer, "writer_b");

  pthread_create(&rc, NULL, reader, "reader_c");
  pthread_create(&wc, NULL, writer, "writer_c");

  pthread_create(&rd, NULL, reader, "reader_d");
  pthread_create(&wd, NULL, writer, "writer_d");

  /* join all threads before exiting */
  pthread_join(r1, NULL);
  pthread_join(r2, NULL);
  pthread_join(w1, NULL);
  pthread_join(r3, NULL);
  pthread_join(w2, NULL);
  pthread_join(r4, NULL);
  pthread_join(wa, NULL);
  pthread_join(ra, NULL);
  pthread_join(wb, NULL);
  pthread_join(rb, NULL);
  pthread_join(wc, NULL);
  pthread_join(rc, NULL);
  pthread_join(wd, NULL);
  pthread_join(rd, NULL);

  /* done */
  return 0;

}


-- 
-----------------------------------------------------------------------
      Gabriel L.  Somlo                 Assistant System Administrator

 Computer Science Department
  Colorado State University             e-mail: somlo@cs.colostate.edu
   601 Howes St. 2nd Floor               phone: +1 (970) 491-5305
   Fort Collins,  CO 80523
-----------------------------------------------------------------------






Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: mingw and pthreads help !
  2001-04-30  9:57 mingw and pthreads help ! Gabriel L Somlo
@ 2001-05-01  0:05 ` Ross Johnson
  0 siblings, 0 replies; 2+ messages in thread
From: Ross Johnson @ 2001-05-01  0:05 UTC (permalink / raw)
  To: Gabriel L Somlo; +Cc: pthreads-win32

Hi,

That's my fault. I forgot to include gcc.dll in with the
pre-built pthreads dlls. I've just uploaded it to

ftp://sources.redhat.com/pub/pthreads-win32/pthreads-dll-2000-12-29/

I hope that's all that's needed. Later I'll include it in the
corresponding self-unpacking zip exe at

ftp://sources.redhat.com/pub/pthreads-win32/pthreads-2000-12-29.exe

Apologies.
Ross

Gabriel L Somlo wrote:
> 
> Hi,
> 
> I am trying to compile an example c-program using pthread rwlocks on
> Windows, using mingw gcc-2.95.2, the crtdll version (the msvcrt version
> gives me the exact same problem). When I finish compiling, after some
> warnings, and try to execute the .exe file, I get a popup error window
> which says the "gcc.dll" file could not be found (this only happens with
> the pthreads program -- a simple hello-world program compiles and executes
> fine).
> 
> Also, if I don't define _MSC_VER I get a parse error when including
> pthread.h
> 
> Can anyone please help me figure out what I'm doing wrong ?
> 
> Thanks,
> 
> Gabriel
> 
> PS. Here's what I've done:
> 
> I've unpacked all the pthread-w32 dll's, libraries, and include files into
> a directory named c:\pthrw32, which is also added to the path of the shell
> program used to start mingw (mingw32.bat):
> 
>         REM
>         REM ...<snip>
>         REM
>         PATH=c:\gcc-2.95.2-crtdll\bin;%PATH%
>         REM add pthread dll directory to path variable
>         PATH=c:\pthrw32;%PATH%
> 
>         REM start shell
>         cmd.exe
> 
> This is what I did in the resulting command window on Win2K:
> 
>         E:\home\threads>gcc -D_REENTRANT -D_MSC_VER -O -Wall
> -o thrtst thrtst.c -lpthreadw32 -Ic:\pthrw32 -Lc:\pthrw32
>         In file included from thrtst.c:14:
>         c:\pthrw32\pthread.h:1019: warning: `__except' redefined
>         c:\gcc-2.95.2-crtdll\bin\..\lib\gcc-lib\i386-mingw32\2.95.2\..
> \..\..\..\i386-mingw32\include\excpt.h:9: warning: this is the location
> of the previous definition
> 
>         In file included from thrtst.c:14:
>         c:\pthrw32\pthread.h:204: warning: ignoring pragma: )
>         In file included from thrtst.c:14:
>         c:\pthrw32\pthread.h:284: warning: ignoring pragma: )
> 
>         E:\home\threads>thrtst.exe
> 
>         < popup window with message saying that gcc.dll could not be found >
> 
> Here is the silly pthread_rwlock example I'm trying to compile:
> 
> /*
>  *  thrtst.c
>  *
>  *  How to compile:
>  *
>  *  On Solaris:
>  *  gcc  -D_REENTRANT -DSOL_SETCONC=4 -O -Wall -o thrtst thrtst.c -lpthread
>  *
>  *  On Linux:
>  *  gcc  -D_REENTRANT -D_XOPEN_SOURCE=500 -O -Wall -o thrtst thrtst.c -lpthread
>  *
>  *  On Windows (mingw32 - gcc-2.95.2-crtdll):
>  *  gcc  -D_REENTRANT -D_MSC_VER -O -Wall -o thrtst thrtst.c -lpthreadw32 \
>  *  -Ic:\pthrw32 -Lc:\pthrw32
>  */
> 
> #include <stddef.h>
> #include <stdio.h>
> #include <unistd.h>
> #include <pthread.h>
> 
> pthread_rwlock_t rwlock;
> 
> void *reader( void *arg ) {
> 
>   unsigned long int i;
> 
>   pthread_rwlock_rdlock( &rwlock );
>   fprintf( stderr, "--> %s starting to read\n", (char *)arg );
> 
>   for( i = 0; i < 50000000; ++i );      /* reading delay */
> 
>   fprintf( stderr, "<-- %s done reading\n", (char *)arg );
>   pthread_rwlock_unlock( &rwlock );
> 
>   return NULL;
> 
> } /* reader */
> 
> void *writer( void *arg ) {
> 
>   unsigned long int i;
> 
>   pthread_rwlock_wrlock( &rwlock );
>   fprintf( stderr, "==> %s starting to write\n", (char *)arg );
> 
>   for( i = 0; i < 50000000; ++i );      /* writing delay */
> 
>   fprintf( stderr, "<== %s done writing\n", (char *)arg );
>   pthread_rwlock_unlock( &rwlock );
> 
>   return NULL;
> 
> } /* writer */
> 
> int main( void ) {
> 
>   pthread_t r1, r2, w1, r3, w2, r4, wa, ra, wb, rb, wc, rc, wd, rd;
>   unsigned long int i;
> 
> #ifdef SOL_SETCONC    /* set concurrency on Solaris machines */
>   pthread_setconcurrency( SOL_SETCONC );
> #endif
> 
>   pthread_rwlock_init(&rwlock, NULL);
> 
>   pthread_create(&r1, NULL, reader, "reader_1");
> 
>   for(i = 0 ; i < 500; ++i);    /* delay */
> 
>   pthread_create(&r2, NULL, reader, "reader_2");
> 
>   for(i = 0; i < 500; ++i);     /* delay */
> 
>   pthread_create(&w1, NULL, writer, "writer_1");
> 
>   for(i = 0; i < 500; ++i);     /* delay */
> 
>   pthread_create(&r3, NULL, reader, "reader_3");
> 
>   for(i = 0; i < 500; ++i);     /* delay */
> 
>   pthread_create(&w2, NULL, writer, "writer_2");
> 
>   for(i = 0; i < 500; ++i);     /* delay */
> 
>   pthread_create(&r4, NULL, reader, "reader_4");
> 
>   pthread_create(&ra, NULL, reader, "reader_a");
>   pthread_create(&wa, NULL, writer, "writer_a");
> 
>   pthread_create(&rb, NULL, reader, "reader_b");
>   pthread_create(&wb, NULL, writer, "writer_b");
> 
>   pthread_create(&rc, NULL, reader, "reader_c");
>   pthread_create(&wc, NULL, writer, "writer_c");
> 
>   pthread_create(&rd, NULL, reader, "reader_d");
>   pthread_create(&wd, NULL, writer, "writer_d");
> 
>   /* join all threads before exiting */
>   pthread_join(r1, NULL);
>   pthread_join(r2, NULL);
>   pthread_join(w1, NULL);
>   pthread_join(r3, NULL);
>   pthread_join(w2, NULL);
>   pthread_join(r4, NULL);
>   pthread_join(wa, NULL);
>   pthread_join(ra, NULL);
>   pthread_join(wb, NULL);
>   pthread_join(rb, NULL);
>   pthread_join(wc, NULL);
>   pthread_join(rc, NULL);
>   pthread_join(wd, NULL);
>   pthread_join(rd, NULL);
> 
>   /* done */
>   return 0;
> 
> }
> 
> --
> -----------------------------------------------------------------------
>       Gabriel L.  Somlo                 Assistant System Administrator
> 
>  Computer Science Department
>   Colorado State University             e-mail: somlo@cs.colostate.edu
>    601 Howes St. 2nd Floor               phone: +1 (970) 491-5305
>    Fort Collins,  CO 80523
> -----------------------------------------------------------------------
> 
> Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/

-- 
+-------------------------+---+
| Ross Johnson            |   | "Come down off the cross
| Management & Technology |___|  We can use the wood" - Tom Waits
| Building 11                 |
| University of Canberra      | eMail: rpj@ise.canberra.edu.au
| ACT    2601                 | WWW:  
http://public.ise.canberra.edu.au/~rpj/
| AUSTRALIA                   |
+-----------------------------+

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2001-05-01  0:05 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-04-30  9:57 mingw and pthreads help ! Gabriel L Somlo
2001-05-01  0:05 ` Ross Johnson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).