쓰레드프로그램에 관한 질문
글쓴이: linuxs / 작성시간: 토, 2004/05/22 - 10:06오후
안녕하세요
쓰래드 라이브러리를 이용해서 프로그램을 개발하고 있는데 궁금하게 있어서 글 올립니다.
먼제 mutex를 이용해서 데이타를 쓰래드간 보호하는걸로 알고 있습니다.
여기서 말하는 데이타란 전역으로 선언된 데이타가 맞나요?(당연한건가^^)
그리고 4개의 쓰래드를 생성해서 각각 쓰래드가 서로 다른 서버로 접속해서 이미지 데이타를 가져와서 디스플레이 하는 걸 만들고 있는데 프로세스 점유율을 4개의 쓰레드 모두 같도록하고 싶은데 어떻게 구현해야 될지 모르겠네요..
그냥 4개 쓰레드 생성해서 돌렸더니 4개중 1넘은 잘 나오다가 3넘은 엄청 느게게 나옵니다. 그래서 4개의 쓰래드가 수행할 수 있는 시간을 같도록하고 싶습니다.
mutex를 이용해서 구현해야 돼나여?
조언 부탁드립니다.
Forums:
질문과 좀 다르지만.네트워크를 이용하신다면,,,쓰레드는 2
질문과 좀 다르지만.
네트워크를 이용하신다면,,,
쓰레드는 20개정도가 좋던데 전,,,
소스 퍼오는건 속도가 꾀 걸리는데 인터넷 전송을 100% 활용안하더군요.
그래서 20개 정도 로 올리니
1개당 약 10배의 속도 향상을 보엿습니다. (M$ 윈도우 환경)
mutex는쓰레드간에 동시에 액세스할 수 있는 데이터(일반적으로
mutex는
쓰레드간에 동시에 액세스할 수 있는 데이터
(일반적으로 전역 데이터)를 보호하기 위한
방법이지 동기화를 위한 건 아닐텐데요.
잘은 모르겠지만, 굳이 일부러 점유율을 맞춰주지 않아도
같은 작업을 하는 쓰레드라면 길게 봤을 때
점유율이 비슷하지 않나요..?
http://home.postech.ac.kr/~sodomau
[quote="sodomau"]mutex는쓰레드간에 동시에 액세스할
맞죠.
어짜피 다른게 점유율을 많이 먹는다고 해도,
join을 하면서 기다리면 다른게 올라가고 이런식으로.
비슷비슷하게 돌아가지 않나요?
[quote="sodomau"]mutex는쓰레드간에 동시에 액세스할
동기화 개념이 맞습니다
실례로 자바의 synchronized 라는 키워드로 뮤텍스의 역활을 수행하고 있습니다
게다가 모든 OS 책 및 시스템 프로그래밍 책에서 상호배제에를 위해 동기화 기법을 쓴다고 합니다 . 동기화라는 이미 표준용어입니다
동기화에 대해 오해 하고 게시는거 같네요
승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스
^^
제가 질문을 잘 이해했는지 모르겠지만
동기화를 통한 스케쥴링을 해주면 좋을 것 같습니다.
즉, 서로 다른 일을 하는 스레드 간의 중계 역할을 하는 스레드가 필요하겠죠
또한 CPU 점유율에 대한 Estimation도 알아보셔야 할듯 합니다.
그리고 mutex는 주로 스레드 간의 동기화를 위한 Kernel Object 아닌가요.
Critical Section에 대한 Mutual Exclusion은 곧 Synchronization을
위해서겠지요.
-----------
청하가 제안하는 소프트웨어 엔지니어로써 재미있게 사는 법
http://sozu.tistory.com
댓글 달기