[Comm] Re: функция Си
Oleg N. Kayunov
=?iso-8859-1?q?okayunov_=CE=C1_mtu-net=2Eru?=
Сб Июн 28 07:36:50 MSD 2003
Gleb Kulikov пишет:
> Thu, 26 Jun 2003 01:14:11 +0400 дня "Oleg N. Kayunov" <okayunov на mtu-net.ru>
>написал(а):
>
>
>
>>1. - Пишется для Питона модуль снимающий данные с карточки и выдающий их в
>>в Питоночитаемом виде. Пишется на C , раз уж библиотека при карточке
>>
>>
>
>Лучше не так (описываю то, что сделано у меня)
> 1. на C/C++, пишется взаимодействие с аппаратурой, стартуется в отдельном
>треде (высокоприоритетном). Данные могут размещаться в выделенных областях
>памяти, например, разделяемой, и т.д.
> 2. Пишется модуль - переходник для Питона, (только!) достающий/обрабатывающий
>данные. Лучше оформлять его по правилам модулей для Numeric, тогда возможен
>прозрачный доступ к массивам данных. В этом случае, проще всего обеспечить
>необходимые времена реакции и т.п., хотя синхронизация процессов,
>выполняющихся в разном масштабе времени. и может доставить головную боль.
>
>
М.б. я что-то не так понял, но тогда уж (раз пошла такая пьянка)
имеет смысл написать для снятия данных и их __буферизации__ отдельную
C-программку - даемона. И запускать её, болезную, с высоким приоритетом.
Можно и root-ом. А енти самые (снятые с карточки и буферизированные)
данные брать с даемона через сокет. Брать когда будет удобно - меньше
проблем с синхронизацией. Дополнительное преимущество - ежели
использовать И-нет сокет, то можно делать всё это через сеть, то бишь -
карточка (карточки) на одной (одних) машинах, обработчик (Питоновский)
на других. И не придётся даже озабочиваться связью между C-шным текстом
и Питоновской программой - всем ведь глубоко фиолетово, какая именно
программка на другом конце линии. А то как писАть программы на C
работающие с сокетами во множестве мест (с примерами) описано. И у
Питона соответствующий модуль имеется. Учитывая, что, как писал
Ткаченко, частота дискретизации невысокая - всё должно пойти на ура.
Или именно это и имелось в виду?
Дополнительно - насчет bc. При всём (искреннем) уважении к bc
математическая библиотечка унего бедновата. А главная (ИМХО) "вкусность"
bc - неограниченная точность (требующая, ест-нно, неограниченного
времени) в этой задаче явно не нужна. Обычный double float перекроет все
требования по точности расчетов (учитывая ограниченную разрядность
карточки) с ну очень большим избытком.
>Засада (если хочется реализоваывать всё это безобразие именно на линуксе, я
>реализовывал работу со своим спектроскопическим стендом под OS/2, в процессе
>раздумей о линукс-реализации, разлил много желчи): реализация многотредовости
>в линуксе воистину*Отвратительная*, именно так, с большой буквы.. Достаточно
>сказать, что ожидание на pthread_cond_wait-- активно жрёт процессор!
>
>
Ну демоны-то в Линукс явно не жрут время в процессе простоя.
>Заодно вопрос к разработчикам: а какие планы относительно NPTL / NGPT в ALT?
>
Интересно знать - что это?
>Спасибо.
>
> Салют, /GLeb
>_
>
--
== В действительности все обстоит совершенно иначе чем на самом деле. ==
BR, Oleg N. Kayunov.
Подробная информация о списке рассылки community