Pthread 오류 그리고 대체 라이브러리 문의 드립니다.

sahngoh의 이미지

구조상 하나의 프로세스가 대량의 쓰레딩을 지원해야되는 될경우 pthread를 대체할 상용/프리 라이브러리가 있을까요?
pthread의 스택 사이즈를 512K로 줄여도 해결되지 않을 뿐더라 종종 스택이 깨지는 현상까지 발생해서 난감합니다.

bugiii의 이미지

coroutine으로 구조를 변경 : 조심해서 사용하면 좋긴하지만 사용하기 조금(?) 불편한 한계가 있습니다.
libevent로 구조를 변경 : IO 위주의 프로세싱이라면 강추지만, 복잡한 로직이라면 비추
state thread로 대체 : 제공하는 IO 함수나 양보 함수들을 사용해야만 스위칭이 됩니다.
GNU pth로 대체 : 정확도와 편리함은 좋지만 성능면에서는 (쓰레드가 많다면) 프로파일링 한번 해보셔야 할 겁니다.

그런데 스택이 깨진다는 것이 정확하게 어떤 말씀인가요? 쓰레드마다 로컬 변수를 많이 쓴다는 것인가요? 동적으로 메모리 관리를 하신다면 스택이 깨진다(?)는 일은 없을텐데요. 혹시 쓰레드 사이의 메모리 공유 문제는 아니었나요?

jick의 이미지

어떤 상황인지는 잘 모르겠습니다만, 쓰레드를 많이 생성해서 메모리가 모자라다면 pthread가 아닌 뭘 사용해도 모자라긴 마찬가지일 겁니다. 다른 라이브러리를 사용한다고 쓰레드가 사용하던 스택이 어디로 가는 게 아니니까요.

* 메모리가 아닌 다른 리소스 문제라면 차이가 있을지도...

tj의 이미지

음 스택 사용량을 줄이는 게 가장 쉽지 않을까요?

http://www.kegel.com/stackcheck/

지금은 어떤지 모르겠는데 예전엔 다이나믹 링커가 쓰레드 스택에서 돌면서 스택을 많이 사용했습니다. 가드 페이지 켜고 누가 스택 많이 쓰는지 확인해보세요. 어느정도까진 줄이기 그렇게 어렵지 않습니다.

댓글 달기

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