[MSDN]관리되는 스레딩을 구현하는 최선의 방법
- Posted at 2008/03/25 20:39
- Filed under Enhance your ability(IT)/.NET
Posted by jongkok4
- Tag
- Thread, Thread 동기화, 경쟁 상태, 관리되는 스레딩, 교착 상태
- Response
- 1 Trackback , No Comment

Posted by jongkok4
Trackback URL : http://jongkok4.net/trackback/113
Soma intimates stores. Soma.
Posted by jongkok4
Trackback URL : http://jongkok4.net/trackback/107
Posted by jongkok4
Trackback URL : http://jongkok4.net/trackback/106
임노간 2008/04/24 20:07 # Edit/Remove Reply Permalink
안녕하세요.
문서 잘 봤습니다.
근데 궁금한게 하나 있습니다.
프로그램을 실행시키면 상태 표시값이 증가하면서, 메모리 사용량이 일정량이 규칙적으로 증가합니다. 그리고 이 메모리 사용량이 그 수준을 계속 유지하고 있습니다.
그래서 제가 Invoke를 일정 간격으로 계속 실행되도록 Thread에서 조정을 했더니, 계속 해서 프로그램을 끝낼때까지 증가하는 현상이 발생합니다.
혹, 어떤 문제인지, 아니면 단순한 현상인지 궁금하네요.
제가 닷넷은 처음이라서요....
jongkok4 2008/04/29 11:17 # Edit/Remove Reply Permalink
예 안녕하세요~
현재 정황으로 정확한 판단을 내리기는 어려우나, 두가지 정도의 문제점을 제기해 드릴수 있을꺼 같네요!
1) Invoke 즉 Control Invoke는 운영 시스템에 현재 Control에 접근 가능한지 요청을 하는 비동기 스레드라고 생각하면됩니다. 만약 현재 Control에 다른 스레드가 접근 중이면 이 Thread는 대기를 하게되고 큐에 쌓이게 됩니다.
즉, 많은 Invoke 요청이 하나의 Control에 지속적으로 요청이 된다면 많은 작업이 큐에 쌓일 것이고 이는 메모리 사용량에 영향을 끼칠꺼라 생각이 들며, 또한 작업이 완료되었다고 닷넷에서 모든 리소스를 해제하는건 아닙니다.
즉 현재 자원을 해제하는 Dispose를 구현하거나 또다른 방법으로 자원을 해제하고,
메모리에서 현재 자원을 수거하는 가비지콜렉터의 호출을 기다릴수 밖에 없습니다.
(강제적으로도 GC를 호출할수도 있지만 더욱 많은 Resource를 사용하기때문에...)
2) ManualResetEvent 또는 AutoResetEvent를 사용하였을 시 자원 해제를 꼮 해 줘야합니다. 이는 닷넷 오류 코드로써 확인을 할 수도 있으면, 우리들의 백과사전 MSDN을(^^;) 확인 하시면 더욱 자세한 설명이 나와 있을것입니다.
Posted by jongkok4
Trackback URL : http://jongkok4.net/trackback/105
보명아빠 2008/03/28 23:46 # Edit/Remove Reply Permalink
아주 잘 봤습니다... 큰 도움이 되었습니다...감사...
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |