threads, aio, kqueue, и охренеть!

Dec 10, 2007 08:14

Всё та же FreeBSD 6.1

Создадим два потока с помощью pthread_create():
1й делает accept(), и aio_read() прикреплённый к kqueue() второго pthread'а
2й kevent()'ом принимает EVFILT_AIO, и обрабатываем
всё отлично работает

теперь заменим создание потока: pthread_create(...) меняем на rfork_thread(,,,)
и, несмотря на то, что kevent() реагирует на завершение aio запроса, aio_return() теперь почему-то даёт ошибку EINVAL и считает, что получил неверный аргумент о_О при том, что struct iocb одна и та же, и доступна из обоих потоков...

вот такая херня. По непонятным причинам, aio_return() из одного ядерного потока не может взять результаты aio_read() другого ядерного потока. грустно всё это, господа

c0ding, c, freebsd

Previous post Next post
Up