ЗЫ. В те времена было много нерусифицированных м недорусифицированных телефонов. Особенно фееричные русификации были у СамСунь, не любили его тогда. Свой типографский движок чхал на русификацию.
Но в голом Си нет и ядра ОС с планировщиком задач. Или искать (единственный «звон», который я слышал,— FreeRTOS), или писать. Планировщик, в принципе, можно написать кроссплатформенно, но разные там счётчики тактов и сохранялки регистров придётся делать отдельно для каждой платформы.
Олег Цилюрик: Я имею в виду вот что: сколько она, по стандарту, должна ждать, пока не скажет: мютекс занят, не пытайся? И чем является это ожидание: пустым циклом, уступанием процессорного времени или чем-то ещё?
Олег Цилюрик: И да, я знаю, что функция захвата мютекса внутри именно что привязывается к производительности процессора, прокручивая подобный холостой цикл с некоторым, рассчитанным статистикой, количеством итераций, а потом — отдаёт процессор другой задаче. Но сделано это только для повышения производительности в многопроцессорных системах (однопроцессорные ядра циклов не гоняют). Ну и пусть это будет системной функцией, а не прикладной программой.
Олег Цилюрик: Многопоточники, когда не знают, как действовать, налаживают подобные циклы с задержкой «на разумное время». Но это всё хак, ибо привязывается к конкретной производительности компьютера.
Я не знаю, как действует функция pthread_mutex_trylock (описание крайне скудное). Но если, когда мютекс занят, выходим из неё мгновенно, это непроизводительный расход ресурсов процессора.
P.S. Можно сделать ещё более ООПисто и разобщить генератор и парикмахерскую — например, сделать интерфейс QueueArea с единственной функцией comeIn(double aTime). Shop тогда у нас будет public QueueArea. Генератор ссылается и на менеджер (точнее, на EventSink), и на парикмахерскую (точнее, на QueueArea).
Двухмерный массив является массивом массивов, а уж как массив организован — другой вопрос. В стандартном сишном способе объявления фиксированного массива int a[3][4] — нет, не будет.
К тому же запутывает такая особенность Си, что имя массива заодно является указателем на его первый элемент.