2016-08-15 2 views
0

Я совершенно новичок в потоковом в C, поэтому мне хотелось проверить, что моя идея была правильной и относительно простой для программирования, прежде чем начинать с нее. Я хочу написать программу, которая может считывать из двух COM-портов одновременно на двух разных потоках (один поток на каждый COM-порт), используя Modbus RTU. Я достаточно разбираюсь в использовании функций libmodbus и т. Д. Это просто часть с потоком, с которой мне нужна помощь.Threading для чтения COM-портов с libmodbus

Итак, несколько вопросов: 1) Возможно ли реализовать это относительно легко (любые примеры, насколько бы они ни были оценены), и если да, то какие соображения в отношении памяти необходимо будет сделать?

2) Какие соответствующие файлы заголовков необходимы для реализации многопоточности в C?

ответ

1

Итак, несколько вопросов: 1) Возможно ли это сравнительно легко (реализовать любые примеры, независимо от того, насколько просто были бы оценены)

Threading довольно сложная тема сама по себе, а затем у вас также есть системные способы использования COM-порта. Вам придется изучать многопоточность и подпрограммы библиотеки COM-специфичных ОС. Это не тривиально.

Какие соображения относительно памяти необходимо будет сделать?

Не стоит беспокоиться, за исключением того, что вы можете реализовать некоторую буферную систему, которая, в свою очередь, должна быть защищена мьютексами, если используется несколькими потоками.

Какие соответствующие файлы заголовков необходимы для реализации многопоточности в C?

В зависимости от системы. Для Linux и других POSIX-систем используйте pthreads (потоки POSIX) от pthread.h. Они могут поддерживаться или не поддерживаться компилятором Windows. В противном случае Windows использует свои собственные подпрограммы потоков, CreateThread и т. Д. Инструменты RAD, такие как Visual Studio или C++ Builder, имеют классы-оболочки вокруг CreateThread. Другие системы могут иметь разные библиотеки.

Была предпринята попытка стандартизации нарезания резьбы стандартом C11, но она все еще находится на экспериментальной фазе, и мы еще не знаем, будет ли она использоваться или получится фиаско - немногие, если какие-либо компиляторы поддерживают потоки C11. На данный момент pthreads является наиболее используемым отраслевым стандартом.

Смежные вопросы