DB 멀티쓰레드 프로그램 질문입니다...

익명 사용자의 이미지

안녕하세요 DB에 대해서 공부하면서 코딩하고 있는데 (MySQL 사용중)

일정 개수의 쓰레드를 미리 생성하고 Main과 작업큐, 리턴큐를 두개 공유하게 한다음

Insert, delete, update, select 문중 선택해 데이터를 입력한 뒤 작업큐에 push 하고 push했다는 이벤트를 발생시키면 쓰레드들의 Sleep이 풀리면서 작업큐에서 pop을 해 연결된 DB에게 쿼리를 쏴주고 리턴받아 큐에 다시 넣어줍니다 그리고 Main은 리턴큐를 검사해 결과를 출력하는 프로그램인데요

문제가

DB의 데이터는 정수가 될 수 있고 문자열이 될 수도 있으니 버퍼에 문자열로 파싱해 주고받게 했었는데

int 4바이트에 비해 문자열은 너무 크니 메모리손해가 발생한다고 생각하는데 어떻게하면

문자열이 아닌 자료형을 문자열과같이 구조체가 아닌 형태로 전달할 수 있을까요?

또, Main이 리턴큐를 검사하는동안 쓰레드들은 완료된 작업을 push하지 못하는데 단순히 Main이 또다른 큐를 가지는 방법 말고 다른 방법이 있을까요?

jick의 이미지

> int 4바이트에 비해 문자열은 너무 크니 메모리손해가 발생한다고 생각하는데

그렇게 생각하신 이유는 뭔가요?

좀 더 구체적으로 말하자면, 작업큐/리턴큐에 쌓일 수 있는 정수의 갯수는 최대 몇 개쯤을 예상하고 계십니까? 100개? 백만개? 10억개?

(발생하는 이벤트의 총 갯수가 아니라 큐에 쌓여서 처리를 기다리고 있는 데이터의 양을 말하는 겁니다.)

그 숫자가 어느 수준이냐에 따라 "정수를 문자열로 저장하는" 것이 프로그램이 돌아가느냐 뻗느냐를 결정하는 핵심 요소가 될 수도 있고, 아무 효과도 없는 데 괜히 프로그램만 복잡하게 만들어 버그를 양산하는 삽질이 될 수도 있습니다.

댓글 달기

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