Mercury13 @Mercury13
1. Определить, сколько там элементов.
2. Завести массив подходящего размера.
3. И заполнить его, переводя элементы-строки в числа. Если прога — не лабораторная работа, а мало-мальски долговременная, укажи вручную локаль чисел! На IT Happens есть много грустных шуток, когда две программы не могут работать вместе, т.к. требуют разные локали (используют системную, но по факту требуют какую-то фиксированную, например, США).
Tapkoch: Во-первых, мы уже узнали, что так и есть, перед нами C++/CLI. Управляемый указатель .NET, как я узнал, там ^ на том же месте, что и звезда для указателя обычного. Подправил.
fshp: Да, я проглючил, и язык, вероятно, не Builder, а C++/CLI, с которым я малознаком.
А Builder — это всего лишь тонкая обёртка над Delphi, и он таскает сразу две библиотеки времени исполнения — Object Pascal и C++.
ЗЫ. В те времена было много нерусифицированных м недорусифицированных телефонов. Особенно фееричные русификации были у СамСунь, не любили его тогда. Свой типографский движок чхал на русификацию.
Но в голом Си нет и ядра ОС с планировщиком задач. Или искать (единственный «звон», который я слышал,— FreeRTOS), или писать. Планировщик, в принципе, можно написать кроссплатформенно, но разные там счётчики тактов и сохранялки регистров придётся делать отдельно для каждой платформы.
Олег Цилюрик: Я имею в виду вот что: сколько она, по стандарту, должна ждать, пока не скажет: мютекс занят, не пытайся? И чем является это ожидание: пустым циклом, уступанием процессорного времени или чем-то ещё?
Олег Цилюрик: И да, я знаю, что функция захвата мютекса внутри именно что привязывается к производительности процессора, прокручивая подобный холостой цикл с некоторым, рассчитанным статистикой, количеством итераций, а потом — отдаёт процессор другой задаче. Но сделано это только для повышения производительности в многопроцессорных системах (однопроцессорные ядра циклов не гоняют). Ну и пусть это будет системной функцией, а не прикладной программой.
Олег Цилюрик: Многопоточники, когда не знают, как действовать, налаживают подобные циклы с задержкой «на разумное время». Но это всё хак, ибо привязывается к конкретной производительности компьютера.
Я не знаю, как действует функция pthread_mutex_trylock (описание крайне скудное). Но если, когда мютекс занят, выходим из неё мгновенно, это непроизводительный расход ресурсов процессора.
P.S. Можно сделать ещё более ООПисто и разобщить генератор и парикмахерскую — например, сделать интерфейс QueueArea с единственной функцией comeIn(double aTime). Shop тогда у нас будет public QueueArea. Генератор ссылается и на менеджер (точнее, на EventSink), и на парикмахерскую (точнее, на QueueArea).
1. Определить, сколько там элементов.
2. Завести массив подходящего размера.
3. И заполнить его, переводя элементы-строки в числа. Если прога — не лабораторная работа, а мало-мальски долговременная, укажи вручную локаль чисел! На IT Happens есть много грустных шуток, когда две программы не могут работать вместе, т.к. требуют разные локали (используют системную, но по факту требуют какую-то фиксированную, например, США).