멀티쓰레드의 공유자원 보호방법에 대한 책이나 자료를 알고 싶습니다.

hyde1004의 이미지

안녕하세요.

실제 코딩을 하거나, 다른 사람의 코드를 보게 되면, 멀티쓰레드는 빠지지 않고 나오는 것 같습니다.

쓰레드에 대한 문법, 세마포어, 뮤텍스에 대한 문법은 인터넷이나 책에서 쉽게 볼 수 있는데요.
제가 실무적으로 어려움을 느끼는 부분은 실제로 어떤 식으로 구현하는가 입니다.
예를 들면, 책에서는 공유 자원(메모리 등)를 보호하라는 식으로 끝입니다만,
그렇다고, 함수 전체에 단순히 mutex를 걸어두는 것은 비효율적이지 않습니까?

이런 내용은 책이나 인터넷 자료에서 찾기가 힘드네요.

- 어떤 식으로 구현하는 것이 효과적인지?
- 어떤 경우에 공유자원을 보호할 필요가 없는지
- 어느 범위까지 보호해주어야 하는가
- 어떤 경우에는 실수하기가 쉬운 부분인지
- 2개이상의 자원을 동시에 보호하는 방법
- 어떻게 디버깅 하는가

아시겠지만, 멀티쓰레드 관련 내용은 어렵기도 하고 디버깅하기도 쉽지 않은데요.
여러분께서는 어떻게 습득하셨는지 궁금합니다.

좋은 책이나 강좌, 인터넷 자료 있으면 소개부탁드립니다.

감사합니다.

jb0730의 이미지

I Don't Know the Multi Threading
But Sycronization Issue is a Shared Data Protection

This region call the Critical Section

Asking the progreamer What is the Shared Data

If You Find Shared Data, Start to Simulation All Case in your Brain

So, You Find the Syncronization Region.

klenui의 이미지

언급하신 질문들은 다소 초보적인 질문이라 코딩이 익숙해지면 금방 알게되는 대목입니다만,

본격적으로 이해하기에는 다음 책이 좋았던 것 같습니다. 다만 제 경우엔 머리가 나빠선지 보는데 시간이 꽤 걸렸습니다.

알라딘 링크:

http://www.aladin.co.kr/shop/wproduct.aspx?ISBN=8979146825

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.