ftp.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2011/07/16/08:30:19

X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
From: Georg <dosusb AT googlemail DOT com>
Newsgroups: comp.os.msdos.djgpp
Subject: Re: Pipe()
Date: Sat, 16 Jul 2011 05:12:31 -0700 (PDT)
Organization: http://groups.google.com
Lines: 57
Message-ID: <9ba183b7-6494-408f-80c9-82fa1fc8493f@34g2000yqr.googlegroups.com>
References: <639f9631-f9d6-42b8-bf70-f943afe5afa8 AT n28g2000vbs DOT googlegroups DOT com>
<d87c0a0f-09dd-4f0d-a175-78399d1f4ccb AT g12g2000yqd DOT googlegroups DOT com>
<9b97a0e5-b352-406d-9504-9947629f7d69 AT s17g2000yqs DOT googlegroups DOT com>
<554b20d9-38c3-4a0b-9769-01cf2cc59884 AT w24g2000yqw DOT googlegroups DOT com>
<83r55udlym DOT fsf AT gnu DOT org> <2c2cb23a-846a-4c08-9052-ce12066b1d99 AT e8g2000yqi DOT googlegroups DOT com>
NNTP-Posting-Host: 92.250.191.164
Mime-Version: 1.0
X-Trace: posting.google.com 1310818459 4712 127.0.0.1 (16 Jul 2011 12:14:19 GMT)
X-Complaints-To: groups-abuse AT google DOT com
NNTP-Posting-Date: Sat, 16 Jul 2011 12:14:19 +0000 (UTC)
Complaints-To: groups-abuse AT google DOT com
Injection-Info: 34g2000yqr.googlegroups.com; posting-host=92.250.191.164; posting-account=v5xbdQoAAAAOGc9Ccc-kLZyobvPlN3Qr
User-Agent: G2/1.0
X-HTTP-Via: 1.1 TAS-4-4.man-a
X-Google-Web-Client: true
X-Google-Header-Order: UALSERCVNKH
X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.4)
Gecko/20091016 Firefox/3.5.4,gzip(gfe)
Bytes: 2903
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

I tried the Minix examples Rugxulo mentioned in the other thread by
converting the makefiles to DOS.

I observed that a sleep() statement in a thread causes a hang with
gthreads. GNU pth 2.07 did continue to work.

Since the Wikipedia example for pthread is the most simple I am aware
of I inserted the sleep() statement there:

#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

#define NUM_THREADS     5

void *TaskCode(void *argument)
{
   int tid;

   tid = *((int *) argument);

   sleep(3); /*this is for testing sleep() in a thread */

   printf("Hello World! It's me, thread %d!\n", tid);
   return NULL;
}

int main (int argc, char *argv[])
{
   pthread_t threads[NUM_THREADS];
   int thread_args[NUM_THREADS];
   int rc, i;

   /* create all threads */
   for (i=0; i<NUM_THREADS; ++i) {
      thread_args[i] = i;
      printf("In main: creating thread %d\n", i);
      rc = pthread_create(&threads[i], NULL, TaskCode, (void *)
&thread_args[i]);
      assert(0 == rc);
   }

   /* wait for all threads to complete */
   for (i=0; i<NUM_THREADS; ++i) {
      rc = pthread_join(threads[i], NULL);
      assert(0 == rc);
	  printf("In main: thread %d joined\n",i);
   }
   printf("\nAll threads joined\n");
   exit(EXIT_SUCCESS);
}

This code will work with pth/pthread but hang at sleep() with
gthreads.

Georg

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019