[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