Библиотека задач для C? - PullRequest
3 голосов
/ 21 октября 2011

Есть ли библиотека задач для C? Я говорю о параллельной библиотеке задач, как она существует в C # или Java. Другими словами, мне нужен слой абстракции над pthread для Linux. Благодаря.

Ответы [ 6 ]

3 голосов
/ 21 октября 2011

Посмотрите на OpenMP .В частности, вас может заинтересовать функция Task в OpenMP 3.0.

Тем не менее, я предлагаю вам попытаться выяснить, можно ли решить вашу проблему с помощью других "базовых" конструкций, например, для параллельного, так как они проще в использовании.

1 голос
/ 21 октября 2011

Многие концепции в TPL (Task, Work-Stealing Scheduler, ...) вдохновлены очень успешным проектом под названием Cilk в MIT. Их усовершенствованная платформа ( Cilk Plus ) была приобретена Intel и интегрирована в Intel Parallel Building Block. Вы все еще можете использовать Cilk в качестве проекта с открытым исходным кодом без каких-либо дополнительных функций. Хорошая новость: Intel выпускает Cilk Plus как открытый исходный код в GCC .

Вам следует попробовать Cilk , поскольку он добавляет еще один уровень абстракции к C, что упрощает выражение параллельных алгоритмов, но он достаточно близок к C, чтобы обеспечить хорошую производительность.

1 голос
/ 21 октября 2011

Вероятно, наиболее широко используемыми примитивами параллельного программирования, кроме Win32, являются примитивы pthreads .

Они довольно низкоуровневые, но включают в себя все необходимое для создания эффективной очереди блокировки и создания пула потоков рабочих, выполняющих очередь асинхронных задач.

Существует также реализация Win32 , поэтому вы можете использовать ту же кодовую базу в Windows, что и в системах POSIX.

0 голосов
/ 01 февраля 2012

Существует академический проект под названием Wool , который реализует планировщик кражи работ в C (при значительной помощи препроцессора C AFAIK). На это, возможно, стоит обратить внимание, хотя, похоже, он активно не развивается.

0 голосов
/ 21 октября 2011

Я хотел проверить libdispatch .Да, он построен для OS X и блоков, но у них также есть функциональные интерфейсы.У меня еще не было времени взглянуть на него, хотя и не уверен, что он удовлетворит все ваши потребности.

0 голосов
/ 21 октября 2011

ANSI C не поддерживает потоки, но есть несколько вариантов: многопоточные C-программы в minGW Привет.

...