온라인 게임서버의 스레드 풀

peccavi의 이미지

안녕하세요.

작업 처리의 순서가 중요한 응용프로그램에서 스레드풀을 사용한다면

각 스레드들간의 동기화 처리를 어떻게 해주어야 하는지 궁굼합니다.

온라인 게임을 예를 들자면, 다음과 같은 상황이 적절하겠네요..

동일한 내용으로 생성된 워커스레드가 2개(a,b)가 있습니다.

사용자로부터 전송된 첫번째 패킷은 캐릭터를 왼쪽으로 움직이는것이고

두번째 패킷은 총알을 한번 발사하는 것입니다.

사용자의 입력 순대로 처리가 진행된다면 왼쪽으로 움직인다음 총알이 발사되어야 겠지요..

그런데 이 상황에서 a,b스레드가 각각의 패킷 작업을 입력받아 처리하는 도중에

첫번째 패킷의 처리 시간이 두번째보다 훨씬 긴 경우엔

총알을 먼저 발사한 후 왼쪽으로 움직이게 됩니다.

이 문제에서 a,b스레드들간의 동기화를 맞춰주기 위해선 어떤 장치를 구현해줘야 할까요?

뭐 장황하게 설명했으나 대충 어떤 상황인지 아시리라 봅니다.

처리 영역에 따라 스레드의 역할도 구분해주는 방법밖에는 적당히 생각나지가 않는데, 뭔가 일반적으로 사용하는 방법이 있을것 같네요..

답변좀 부탁드릴께요..

kihongss의 이미지

peccavi wrote:
안녕하세요.

작업 처리의 순서가 중요한 응용프로그램에서 스레드풀을 사용한다면

각 스레드들간의 동기화 처리를 어떻게 해주어야 하는지 궁굼합니다.

온라인 게임을 예를 들자면, 다음과 같은 상황이 적절하겠네요..

동일한 내용으로 생성된 워커스레드가 2개(a,b)가 있습니다.

사용자로부터 전송된 첫번째 패킷은 캐릭터를 왼쪽으로 움직이는것이고

두번째 패킷은 총알을 한번 발사하는 것입니다.

사용자의 입력 순대로 처리가 진행된다면 왼쪽으로 움직인다음 총알이 발사되어야 겠지요..

그런데 이 상황에서 a,b스레드가 각각의 패킷 작업을 입력받아 처리하는 도중에

첫번째 패킷의 처리 시간이 두번째보다 훨씬 긴 경우엔

총알을 먼저 발사한 후 왼쪽으로 움직이게 됩니다.

이 문제에서 a,b스레드들간의 동기화를 맞춰주기 위해선 어떤 장치를 구현해줘야 할까요?

뭐 장황하게 설명했으나 대충 어떤 상황인지 아시리라 봅니다.

처리 영역에 따라 스레드의 역할도 구분해주는 방법밖에는 적당히 생각나지가 않는데, 뭔가 일반적으로 사용하는 방법이 있을것 같네요..

답변좀 부탁드릴께요..

질문하신 내용과 조금은 다를지 모르겠지만,
메세지 처리를 IOCP의 스레드풀을 사용한 기사가
마소에 소개된적이 있습니다.
마소 2005년 3월호의

Quote:
[테크니컬 칼럼] Completion Port를 이용한 이벤트-메세지 기반 서버 프레임워크

를 참조해 보시기 바랍니다.
PDF 다운로드는 유료라서 그렇지만, 근처 도서관 가서
찾아보세요.
peccavi의 이미지

답변 감사합니다. 읽어보니 많은 도움이 됐네요.. :o

----
jai guru deva om...

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.