Spec-Zone .ru
спецификации, руководства, описания, API
Spec-Zone .ru
спецификации, руководства, описания, API
Библиотека разработчика Mac Разработчик
Поиск

 

Эта страница руководства является частью версии 5.0 Инструментов XCode

Получить эти инструменты:

Если Вы выполняете версию Инструментов XCode кроме 5,0, просматриваете документацию локально:

Читать страницы руководства

Страницы руководства предназначаются как справочник для людей, уже понимающих технологию.

  • Чтобы изучить, как руководство организовано или узнать о синтаксисе команды, прочитайте страницу руководства для страниц справочника (5).

  • Для получения дополнительной информации об этой технологии, ищите другую документацию в Библиотеке Разработчика Apple.

  • Для получения общей информации о записи сценариев оболочки, считайте Shell, Пишущий сценарий Учебника для начинающих.




dispatch_semaphore_cr... BSD Library Functions Manual dispatch_semaphore_cr...

NAME
     dispatch_semaphore_create, dispatch_semaphore_signal, dispatch_semaphore_wait -- synchronized counting
     semaphore

SYNOPSIS
     #include <dispatch/dispatch.h>

     dispatch_semaphore_t
     dispatch_semaphore_create(long count);

     long
     dispatch_semaphore_signal(dispatch_semaphore_t semaphore);

     long
     dispatch_semaphore_wait(dispatch_semaphore_t semaphore, dispatch_time_t timeout);

DESCRIPTION
     Dispatch semaphores are used to synchronize threads.  The timeout parameter is creatable with the
     dispatch_time(3) or dispatch_walltime(3) functions.

COMPLETION SYNCHRONIZATION
     If the count parameter is equal to zero, then the semaphore is useful for synchronizing completion of
     work.  For example:

           sema = dispatch_semaphore_create(0);

           dispatch_async(queue, ^{
                   foo();
                   dispatch_semaphore_signal(sema);
           });

           bar();

           dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);

FINITE RESOURCE POOL
     If the count parameter is greater than zero, then the semaphore is useful for managing a finite pool of
     resources.  For example, a library that wants to limit Unix descriptor usage:

           sema = dispatch_semaphore_create(getdtablesize() / 4);

     At each Unix FD allocation:

           dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
           fd = open("/etc/services", O_RDONLY);

     When each FD is closed:

           close(fd);
           dispatch_semaphore_signal(sema);

RETURN VALUES
     The dispatch_semaphore_create() function returns NULL if no memory is available or if the count parame-ter parameter
     ter is less than zero.

     The dispatch_semaphore_signal() function returns non-zero when a thread is woken.  Otherwise, zero is
     returned.

     The dispatch_semaphore_wait() function returns zero upon success and non-zero after the timeout
     expires. If the timeout is DISPATCH_TIME_FOREVER, then dispatch_semaphore_wait() waits forever and
     always returns zero.

MEMORY MODEL
     Dispatch semaphores are retained and released via calls to dispatch_retain() and dispatch_release().

CAVEATS
     Unbalanced dispatch semaphores cannot be released.  For a given semaphore, calls to
     dispatch_semaphore_signal() and dispatch_semaphore_wait() must be balanced before dispatch_release() is
     called on it.

SEE ALSO
     dispatch(3), dispatch_object(3)

Darwin                            May 1, 2009                           Darwin

Сообщение о проблемах

Способ сообщить о проблеме с этой страницей руководства зависит от типа проблемы:

Ошибки содержания
Ошибки отчета в содержании этой документации со ссылками на отзыв ниже.
Отчеты об ошибках
Сообщите об ошибках в функциональности описанного инструмента или API через Генератор отчетов Ошибки.
Форматирование проблем
Отчет, форматирующий ошибки в интерактивной версии этих страниц со ссылками на отзыв ниже.