test/testsem.c
changeset 1495 1dd8bf30a109
parent 1439 4d3bb026cd16
child 1615 d5298e8f22b3
equal deleted inserted replaced
1494:4da1926c287c 1495:1dd8bf30a109
    13 static SDL_sem *sem;
    13 static SDL_sem *sem;
    14 int alive = 1;
    14 int alive = 1;
    15 
    15 
    16 int ThreadFunc(void *data)
    16 int ThreadFunc(void *data)
    17 {
    17 {
       
    18 	uintptr_t threadnum = (uintptr_t)data;
    18 	while ( alive ) {
    19 	while ( alive ) {
    19 		SDL_SemWait(sem);
    20 		SDL_SemWait(sem);
    20 		fprintf(stderr, "Thread number %d has got the semaphore (value = %d)!\n", (int)data, SDL_SemValue(sem));
    21 		fprintf(stderr, "Thread number %d has got the semaphore (value = %d)!\n", threadnum, SDL_SemValue(sem));
    21 		SDL_Delay(200);
    22 		SDL_Delay(200);
    22 		SDL_SemPost(sem);
    23 		SDL_SemPost(sem);
    23 		fprintf(stderr, "Thread number %d has released the semaphore (value = %d)!\n", (int)data, SDL_SemValue(sem));
    24 		fprintf(stderr, "Thread number %d has released the semaphore (value = %d)!\n", threadnum, SDL_SemValue(sem));
    24 		SDL_Delay(1); /* For the scheduler */
    25 		SDL_Delay(1); /* For the scheduler */
    25 	}
    26 	}
    26 	printf("Thread number %d exiting.\n", (int)data);
    27 	printf("Thread number %d exiting.\n", threadnum);
    27 	return 0;
    28 	return 0;
    28 }
    29 }
    29 
    30 
    30 static void killed(int sig)
    31 static void killed(int sig)
    31 {
    32 {
    33 }
    34 }
    34 
    35 
    35 int main(int argc, char **argv)
    36 int main(int argc, char **argv)
    36 {
    37 {
    37 	SDL_Thread *threads[NUM_THREADS];
    38 	SDL_Thread *threads[NUM_THREADS];
    38 	int i, init_sem;
    39 	uintptr_t i;
       
    40 	int init_sem;
    39 
    41 
    40 	if(argc < 2) {
    42 	if(argc < 2) {
    41 		fprintf(stderr,"Usage: %s init_value\n", argv[0]);
    43 		fprintf(stderr,"Usage: %s init_value\n", argv[0]);
    42 		return(1);
    44 		return(1);
    43 	}
    45 	}