Добрый день! Подскажите, пожалуйста, почему sem_timedwait сразу же завершается, хотя я бы в приведенном далее примере ожидал от него трехтысячесекундного ожидания? /tmp >time ./a.out 110 Connection timed out real 0m0.002s user 0m0.000s sys 0m0.000s /tmp >cat sem.c #include <semaphore.h> #include <errno.h> main() { sem_t st; struct timespec ts; ts.tv_sec = 3000; ts.tv_nsec = 0; sem_init(&st, 0, 0); // sem_wait(&st); if (sem_timedwait(&st, &ts)) { printf("%d\n", errno); perror(0); } } С другой стороны, если в семафоре живет 1, то он сразу же возвращает 0. Просто sem_wait, естественно, ведет себя вполне ожидаемым образом и при занятом и при свободном семафоре. /tmp >ldd a.out libpthread.so.0 => /lib/tls/libpthread.so.0 (0x4002b000) libc.so.6 => /lib/tls/libc.so.6 (0x42000000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) /tmp >rpm -qf /lib/tls/libpthread.so.0 glibc-2.3.2-11.9 Os — Redhat 9, ядро 2.4.20, компилятор gcc 3.2.2 Я так понимаю, что sem_timedwait - не вполне стандартная функция, и я бы смирился с ее полным отсутствием, но здесь какое-то уж больно странное поведение. Буду очень признателен за попытку выполнения моего теста на других системах. При сборке нужно указать -lpthread
Ответ на:
комментарий
от romanSA
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Переход от LinuxThreads к NTPL (2004)
- Форум Помогите!!! Скомпилить прог у и запустить еёан другой машине. (2004)
- Форум [C++] Странная проблема с localtime_r и семафорами (2009)
- Форум sem_timedwait и CLOCK_MONOTONIC_RAW (2017)
- Форум устал ждать (2008)
- Форум Надоело ждать. 10.10 (2010)
- Форум как правильно ждать? (2020)
- Форум ARM когда ждать? (2009)
- Форум Чего ждать от haswell (2013)
- Форум Ждать ли LOR API? (2012)