직렬 프로토콜 스택의 경우 serial에서 읽고 쓰는 스레드와 쓰기 전용 스레드를 구현할 것입니다. 한번 열고 두 스레드에서 파일 기술자를 사용하는 것이 안전한지open() 다중 스레드 컨텍스트에서 읽기 및 쓰기를 위해 직렬 장치를 두 번 사용합니다.
이 궁금하거나이 같은 두 번 열고하는 것이 좋습니다 :
tx_fd = open("/dev/ttyS0", O_WRONLY);
rx_fd = open("/dev/ttyS0", O_RDONLY);
또는 어쩌면 내가해야 할 다른 패러다임을 사용해야합니다 단일 스레드의 모든 것.
함정은 무엇입니까?
두 가지 모두 작동해야합니다. 많은 차이가 있다고 생각하지 않습니다. 두 번 열면 어떤 스레드가 그것을 닫을지를 조정할 필요가 없다는 것을 의미합니다. – Barmar
@Barmar * 어느 쪽이든 작동해야합니다. * 유명한 마지막 단어 ... ;-) –
COM 포트를 사용하면 두 번 열어 볼 수 없습니다. 정말 조심하세요. 별도의 쓰레드로 쓰려면 해당 쓰레드에만 쓰십시오. 읽기 스레드 또는 다른 스레드가 버퍼링 된 내용을 보내려면 버퍼를 단일 쓰기 스레드에 대기열에 넣으십시오. –