라즈베리파이 (ANSI C)에서 여러 디바이스의 입력.

무아   
   조회 3592   추천 0    

라즈베리파이에서 C 로 입력디바이스를 프로그래밍 하다보니 멀티쓰레드 문제가 생기네요.

예를들어

ADC 모듈을 연결하여 ADC도 하고 GPIO를 통하여 로터리 엔코더 값도 읽다보니

각각을 c로 짜서 각각 동시에 동작시키면 (2개의 프로세스로  각각 실행) 잘 동작하는데 둘을 하나의 소스코드 합쳐서 하나의 프로세스로 합치면 논리상 문제가 생기네요.

보통 하나의 while 루프 속에서 각각의 모듈에 대하여 조건에 따른 대기를 하는 구성이다 보니 둘을 동시에 돌리면 한놈 때문에 다른 한놈도 같이 놀게 되는 상황이라..

오랜만에 C 를 짜다 보니.. 멀티 쓰레드가 지원 되었던가? 가물가물... C** 로 코드를 바꿔야 겠군....

라즈베리파이 파이썬도 잘 되어 있는 것 같은데 파이썬 배워서 파이썬으로... ???


라즈베리파이에서 주변장치 여러개의 입력을 처리하려면 멀티쓰레드로 코딩하는 것이 맞는 접근 방법인가요?

만약 멀티쓰레드로 가는게 맞다면 C++ 이 좋을까요? 파이썬이 좋을까요??  

...
짧은글 일수록 신중하게.
EdH 2017-08
파이썬은 기본적으로 멀티쓰레딩과는 매우 친하지 않아서 추천드리기가 힘들고요.
씨에서도 멀티쓰레딩은 충분히 가능합니다. 좀 지저분할 뿐이지 현대적인(?) 병렬 프로그래밍 충분히 가능해요.
지저분한 코드가 싫으시면 씨플플이나 자바러 가셔야겠죠.
     
무아 2017-08
답변 감사합니다.
파이썬 멀티쓰레딩 관련 글을 검색중에 얼핏 본듯하여 일반적인 것이라 생각했는데 아닌가 보군요.
C 멀티쓰레딩이 있나보군요. 멀티쓰레딩은 C++ 하면서 접했던 것이라 당연히 C 에는 없겠지 했네요 ^^

 p.s. 아.. 그러고 보니 c 로 된 간단한 tcpip 채팅 서버 예제를 보면 bind 후에 클라이언트 접속이 오면 따로 자식 프로세스를 만들어 빼 주는 형태가 있었네요.
미니TM 2017-08
라즈베리면 리눅스 사용하실테고..
pthread 사용하시면 될 것 같습니다.
이전에 장비프로그램 짤때... 장비 5개에서 데이터 받아서 소켓으로 전송하는 부분을 pthread로 짯던 걸로 기억합니다.
     
무아 2017-08
답변 감사합니다.
pthread 로 하면 되는 거군요.
p.s. pthread 로 만들어 빼주니 간단하게 해결됩니다. ^^
화란 2017-08
pthread 보다 더 단순한걸 원하시면 OMP 라는 라이브러리도 있어요~
     
무아 2017-08
이런 것도 있군요.
검색해서 보다 보니.. 왠지 쿠다 같은 GPU 연산들이 쪽에서 발전해 나간 거 아닐까 생각이 듭니다.


QnA
제목Page 1265/5708
2015-12   1677970   백메가
2014-05   5143828   정은준1
2018-04   3588   DTKim
2015-10   3588   윈도우10
2015-03   3588   아날로그
2014-08   3589   크롱크롱
2016-07   3589   배병렬
2017-10   3589   봉봉이
2015-03   3589   전설속의미…
2015-08   3589   갈릭푸드
2017-10   3589   Win31
2020-12   3589   김준유
2015-07   3589   황진우
2013-12   3589   EYESSHOT
2021-04   3589   무아
2019-05   3589   김효수
2018-04   3589   통신보안
2015-07   3589   2CPU최주희
2015-08   3589   태성기김
2016-10   3589   푸하히
2019-01   3589   정의석
2019-09   3589   MeMeMeMe