송수신 스레드에서 같은 소켓 배열을 접근해서 select로 체크 하고 있습니다. 근데 recv, send 에러시 잠금을 걸고 소켓을 제거 해야 하는데 빠른 처리가 필수적인 스레드라 대도록이면 잠금을 사용하지 않고 처리하고 싶습니다만 어떻게 방법이 없을가요..?
보아하니 송수신보다는 에러 발생이 현저하게 적은 빈도겠지요. 그러면 흔히 쓰이는 방법 중 하나는 어떤 식으로든 컬렉션을 두 개 운영해서 하나는 동기화가 필요없는 읽기전용으로 쓰고, 나머지 하나만 쓰기(+읽기) 용으로 쓰되, 필요할 때 컬렉션의 레퍼런스를 서로 교체하거나 값을 복사해주는 것입니다.
--
epoll 이나 event 처리해주는 glib과 같은 라이브러리 사용하면
lock은 걸 필요 없을 것 같습니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
자세한 상황설명이 필요하긴 합니다만
보아하니 송수신보다는 에러 발생이 현저하게 적은 빈도겠지요. 그러면 흔히 쓰이는 방법 중 하나는 어떤 식으로든 컬렉션을 두 개 운영해서 하나는 동기화가 필요없는 읽기전용으로 쓰고, 나머지 하나만 쓰기(+읽기) 용으로 쓰되, 필요할 때 컬렉션의 레퍼런스를 서로 교체하거나 값을 복사해주는 것입니다.
--
epoll 이나 event 처리해주는 glib과 같은
epoll 이나 event 처리해주는 glib과 같은 라이브러리 사용하면
lock은 걸 필요 없을 것 같습니다.
댓글 달기