Документация MySQL

13.09.2009

В этих пакетах используются старые версии большинства вызовов POSIX,
поэтому очень утомительно создавать оболочки (wrapper) для всех функций.
На мой взгляд, было бы легче изменить библиотеки этих потоков в
соответствии с современной спецификацией POSIX.
Некоторые оболочки уже написаны (чтобы получить более подробную
информацию, обращайтесь к
'mysys/my_pthread.c'
).
Следует изменить, по меньшей мере, следующие аспекты:
должен использоваться один аргумент, а в
-
два аргумента. Многие функции (по крайней мере,
,
) должны возвращать код ошибки или ошибку. Сейчас
они возвращают
.
Еще одна проблема заключается в том, что потоки пользовательского уровня
используют сигнал
, преждевременно прекращающий работу многих функций
(
read, write, open...
). MySQL должен повторять попытку выполнить такие
вызовы в случае прерывания, но это не так легко проверить.
Чтобы получать alarm на уровне потока, я изменил
mysys/thr_alarm.c
. Однако
оказалось, что это приводит к преждевременному прекращению работы с
ошибкой
. Чтобы понять, почему так получается, я пытался отладить
библиотеку потока, но не смог найти никакого простого решения.
Для тех, кто хочет попробовать использовать MySQL с потоками RTS, я
предлагаю следующее:
Измените функции, используемые MySQL из библиотеки потоков для POSIX.
Это не должно занять много времени.
.
.
Если существуют некоторые небольшие отличия в реализации, то они могут
быть устранены изменением
'my_pthread.h'
'my_pthread.c'
.
. Если программа выполняется без каких-либо
предупреждений, сообщений об ошибках или об аварийном выходе, значит,
вы на правильном пути. Ниже приводится успешный прогон программы под
Solaris:
Main thread: 1
Thread 0 (5) started
Thread: 5 Waiting
process_alarm
Thread 1 (6) started
Thread: 6 Waiting
process_alarm
process_alarm
thread_alarm
Thread: 6 Slept for 1 (1) sec
Thread: 6 Waiting
process_alarm
process_alarm
thread_alarm
Thread: 6 Slept for 2 (2) sec
Thread: 6 Simulation of no alarm needed
Thread: 6 Slept for 0 (3) sec
Thread: 6 Waiting
process_alarm
process_alarm
thread_alarm
Thread: 6 Slept for 4 (4) sec
Thread: 6 Waiting
process_alarm
thread_alarm
Thread: 5 Slept for 10 (10) sec
Thread: 5 Waiting
process_alarm
process_alarm
thread_alarm
Thread: 6 Slept for 5 (5) sec
Thread: 6 Waiting
process_alarm
process_alarm

...
thread_alarm
Thread: 5 Slept for 0 (1) sec
end

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Рубрики: Без рубрики |

Оставить комментарий

Заметьте: Включена проверка комментариев. Нет смысла повторно отправлять комментарий.