Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2011, 00:44   #1
papos
Пользователь
 
Регистрация: 20.09.2010
Сообщений: 37
По умолчанию Блокировки mutex в Linux

Доброй ночи. Есть такое задание - необходимо создать две нити, одна из которых выполняет какую то длительную операцию, а вторая постоянно опрашивает ее на предмет успешного выполнения этой операции. Я реализовал это так:
Код:
#include <stdio.h>
#include <pthread.h>

pthread_attr_t print_lock = PTHREAD_MUTEX_INITIALIZER; 

void *f_first(void *d)
{
	while(1) {
		pthread_mutex_lock(&print_lock);
		printf("First\n");
                sleep(100);
		pthread_mutex_unlock(&print_lock);
	}
	return NULL;
}
void *f_second(void *d)
{
	while(1) {
                sleep(5);
		pthread_mutex_trylock(&print_lock);
		printf("Try\n");
		pthread_mutex_unlock(&print_lock);
	}
	return NULL;
}

int main(int argc, char** argv)
{
	pthread_t first,second;
    int result;
	result = pthread_create( &first,  (pthread_attr_t *)NULL, f_first, NULL);
    if(result != 0){
      printf ("Error on thread create,  return value = %d\n", result);
      exit(-1);
    }
    result = pthread_create( &second,  (pthread_attr_t *)NULL, f_second, NULL);
    if(result != 0){
      printf ("Error on thread create,  return value = %d\n", result);
      exit(-1);
    }
	pthread_join(first, (void **)NULL);
	return 0;
}
Но теперь у меня еще возникла необходимость в случае того, если при помощи trylock все же удалось заблокировать, то выполнять другую операцию. Как мне реализовать if в данном случае? Заранее спасибо
papos вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Срабатывают блокировки Fezdipekla Microsoft Office Access 0 16.01.2011 10:22
Снятие блокировки регистров. ТриСемёрки Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 04.10.2010 14:06
Использование mutex Sparky Помощь студентам 1 29.05.2010 16:24
Не работает Mutex (MDI приложение) Terazoid Win Api 1 26.04.2010 16:53
протокол блокировки таблицы Bat{CMD}_Men БД в Delphi 4 16.10.2009 17:36