This is test1.c in view mode; [Download] [Up]
/*
* FILE: A test of pthread_delay_np() and friends
*/
#include <stdlib.h>
#include <stdio.h>
#include <pthread.h>
#include <utils.h>
#define ITERATIONS (100)
static void
proc( struct timespec *tv )
{
long sum = 0;
int i, st;
for(i = 0; i < ITERATIONS; i++ )
sum += 1;
st = pthread_delay_np( tv );
CHECK(st, "pthread_delay_np()");
for(i = 0; i < ITERATIONS; i++ )
sum += 1;
pthread_exit( (void *) SUCCESS );
}
static pthread_t *th;
int
main( int argc, char *argv[] )
{
int i, st, exit_status, num_threads = 1;
struct timespec tv;
if( argc == 2 )
num_threads = atoi( argv[1] );
th = malloc_r( num_threads * sizeof( pthread_t ));
tv.tv_sec = 10;
tv.tv_nsec = rand() % 500000 + 100000;
for(i = 0; i < num_threads; i++ )
{
st = create_joinable( &th[i], (thread_proc_t) proc, &tv );
CHECK(st, "create_joinable()");
}
for(i = 0; i < num_threads; i++ )
{
st = pthread_join( th[i], (void **) &exit_status );
CHECK(st, "pthread_join()");
pthread_lock_global_np();
if( exit_status != SUCCESS )
fprintf(stderr, "Failed to join with thread[%d]!\n", i + 2 );
else
printf("Joined with thread[%d]!\n", i + 2 );
pthread_unlock_global_np();
}
free_r( th );
print_system_counters();
return( EXIT_SUCCESS );
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.