示例#1
0
int main(void)
{
	int ret;
	int i, flag;
	pthread_mutex_t *global_mutex;

	int sleep_period = 100000;
  	
	if ((global_mutex = shmem_mutex_init()) == NULL)
		exit(-2);
	
	while (1) {
		ret = pthread_mutex_trylock(global_mutex);
		switch (ret) {
		case EBUSY: 
			printf("a contention detected\n"); 
			usleep(sleep_period);
			break;
		case EINVAL: printf("uninitialized mutex\n"); break;
		case EFAULT: printf("invalid pointer\n"); break;
		case 0: 
			printf("got the lock\n"); 
			long_running_task();
			pthread_mutex_unlock(global_mutex);
			break;
		default: /* do nothing */ break;
		}
		
	}

	return 0;
}
示例#2
0
int main(void)
{
    int ret;
    int i, flag;
    pthread_mutex_t *global_mutex;

    if ((global_mutex = shmem_mutex_init()) == NULL)
        exit(-2);

    while (1) {
        pthread_mutex_lock(global_mutex);
        long_running_task();
        pthread_mutex_unlock(global_mutex);
    }

    return 0;
}