Exemple #1
0
static void *Outputter(void *arg)
{
  lpel_stream_desc_t *in = LpelStreamOpen((lpel_stream_t*)arg, 'r'); 
  char *item;
  int term = 0;

  printf("Outputter START\n");

  while (!term) {
    item = LpelStreamRead(in);
    assert( item != NULL );
    printf("\n\n*************************************\nOut: %s\n*************************************\n", item );

    if ( 0 == strcmp( item, "T\n")) {
      term = 1;
    }
    //free( item);
	SCCFreePtr(item);
  } // end while

  LpelStreamClose( in, 1);
  printf("Outputter TERM\n");

  LpelStop();
  return NULL;
}
Exemple #2
0
int SNetThreadingStop(void)
{
	/* send a stop signal to LPEL */
	LpelStop();
	/* following call will block until the workers have finished */
	LpelCleanup();
	return 0;
}
Exemple #3
0
void *Consumer(void *inarg)
{
  char *msg;
  int i, term;
  lpel_streamset_t lst = NULL;
  lpel_stream_iter_t *iter;

  printf("start Consumer\n" );
  /* open streams */
  for (i=0; i<NUM_COLL; i++) {
    LpelStreamsetPut( &lst, LpelStreamOpen(scoll[i], 'r'));
  }

  iter = LpelStreamIterCreate(&lst);

  term = 0;
  do {
    /* here we do wait */
    printf("Consumer poll\n");
    LpelStreamPoll( &lst);
    printf("Consumer resumes\n");

    printf("Consumer iterates:\n");
    LpelStreamIterReset(iter, &lst);
    while( LpelStreamIterHasNext(iter)) {
      lpel_stream_desc_t *snext = LpelStreamIterNext(iter);
      if ( NULL != LpelStreamPeek( snext )) {
        msg = (char *) LpelStreamRead( snext);
        if (0 == strcmp( msg, "T\n" )) {
          term=1;
        } else {
          printf("%s", msg );
          free(msg);
        }
      }
    }
    //sleep(5);
  } while (0 == term) ;

  /* print & free termination message */
  printf("%s", msg );
  free(msg);

  /* close streams */
  LpelStreamIterReset(iter, &lst);
  while( LpelStreamIterHasNext(iter)) {
    lpel_stream_desc_t *snext = LpelStreamIterNext(iter);
    LpelStreamClose( snext, 1);
  }
  LpelStreamIterDestroy( iter);
  printf("exit Consumer\n" );

  LpelStop();
  return NULL;
}