Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
rarelang
Зарегистрирован: 07.04.2004 Сообщения: 42
|
Добавлено: Пт Июн 11 2004 21:01 Заголовок сообщения: Обеспечение последовательного доступа к ресурсам |
|
|
Всем добрый день.
Посоветуйте мне пожалуйста решение для следующей проблемы:
Я пишу CGI приложение с использованием C++, основная моя цель написать приложение свободно переносимое как под Windows так и под Linux/UNIX FreeBSD. В приложении мне нужно обеспечить последовательный доступ к определенным файлам для запускаемых в произвольном количестве CGI приложений. Т.е. я ни в коем случае не должен допустить одновременного доступа к определенным файлам (которые представляют собой что-то вроде базы данных) более чем одной копии CGI приложения. Мне посоветовали использовать lock-файл. Насколько я понимаю я должен использовать ANSI С/С++ и POSIX функции которые бы работали как в Windows так и в Linux/UNIX. Дополнительная проблема состоит в том что если к примеру во время работы одного из CGI полетит сервер то lock-файл удален не будет и таким образом ни один из последующих запусков CGI успешным не будет пока кто-то вручную этот lock-файл не удалит.
Как я понимаю алгоритм можно разбить на две функции Lock() и Unlock() -
Алгоритм Lock() следующий:
1 - создание lock-файла
2 - проверка времени создания файла и если он создан позднее чем к примеру 15 минут назад то значит что файл недействителен и можно устанавливать lock
3 - создание файла блокировки или ожидание пока другая копия CGI снимет блокировку
Алгоритм Unlock() следующий:
1 - удаление lock-файла
Подскажите мне пожалуйста функции создания и проверки времени и факта существования файла которые бы работали под Windows, Linux и UNIX, насколько я знаю такие функции существуют.
Заранее спасибо. |
|
Вернуться к началу |
|
|
hexen
Зарегистрирован: 04.06.2004 Сообщения: 38
|
Добавлено: Пт Июн 11 2004 22:49 Заголовок сообщения: |
|
|
а зачем на с++ ? раз многоплатформенно то мож на Jave лучше будет ? |
|
Вернуться к началу |
|
|
Родион
Зарегистрирован: 18.01.2004 Сообщения: 183
|
Добавлено: Сб Июн 12 2004 02:31 Заголовок сообщения: |
|
|
никогда под никс не писал, но нельзяли определять ОС и использовать, что надо.
Я пишу на ПХП , и там, что под линь , что под вынь, а у тебя одна и таже не прокатит???
А с лок/анлок я бы не 15 минут ждал, а писал бы в него например каждые 2 секунды время, и если надо проверял бы с настоящим, больше 2 - все, трем его.
А вообще не простая это тема(хотя в форумы именно с такими и надо обращаться : ), про CVS никогда не слышал?? Эти системы с этим именно работают, IMHO - это тебе не Привет мир писать)) _________________ RTFM |
|
Вернуться к началу |
|
|
GREA
Зарегистрирован: 14.05.2003 Сообщения: 758 Откуда: Новосибирск
|
Добавлено: Сб Июн 12 2004 07:44 Заголовок сообщения: |
|
|
Цитата: | IMHO - это тебе не Привет мир писать)) |
Да нуууу? |
|
Вернуться к началу |
|
|
Andy-C
Зарегистрирован: 09.12.2003 Сообщения: 73 Откуда: Нальчик
|
Добавлено: Ср Июн 16 2004 13:47 Заголовок сообщения: |
|
|
Для этого существуют средства синхронизации/блокирования на уровни ОС.
см. CreateMutex,CreateShemaphore,EnterCriticalSection и т.п. _________________ До onlina Andrew C. |
|
Вернуться к началу |
|
|
|