В настоящее время я создаю тонкую оболочку C ++ вокруг pthreads для внутреннего использования. Windows и QNX нацелены, и, к счастью, порты pthreads-win32, кажется, работают очень хорошо, в то время как QNX соответствует POSIX для наших практических целей.
Теперь при реализации семафоров я нажимаю на функцию
sem_post_multiple(sem_t*, int)
, который, очевидно, доступен только на pthreads-win32, но отсутствует в QNX. Как следует из названия, функция должна увеличивать семафор на число, указанное в качестве второго аргумента. Насколько я могу судить, функция не является частью ни POSIX 1b, ни POSIX 1c.
Несмотря на то, что в настоящее время нет никаких требований для указанной функции, я все еще задаюсь вопросом, почему pthreads-win32 предоставляет функцию и может ли она быть полезной. Я мог бы попытаться имитировать его для QNX, используя примерно следующее:
sem_post_multiple_qnx(sem_t* sem, int count)
{
for(;count > 0; --count)
{
sem_post(sem);
}
}
То, что я прошу, это предложение / совет о том, как действовать. Если консенсус предлагает реализовать функцию для QNX, я также был бы признателен за комментарии о том, является ли предложенный фрагмент кода жизнеспособным решением.
Заранее спасибо.
PS: я специально упустил свой модный класс C ++ для ясности. Для всех людей, предлагающих помощь в спасении: это не вариант в моем текущем проекте по причинам управления.