오라클 ProC 스레드 프로그램에 있어서....

unexpected의 이미지

새해에 복 많이 받으시고요...많이 웃는 한해 되세요..^^

스레드간 Context를 공유하지 않는 모델로 프로그램을 하려고 합니다.

매뉴얼을 보면 1번과 같이 스레드 생성전에 Context를 선언하고, 스레드 종료를 기다렸다가 ALLOCATE/FREE를 해주는 예제가 있고요..
BBS를 검색해서 참고하다보면 2번 같이 생성된 스레드 자체에서 Context를 선언/ALLOCATE 해주고, 스레드가 종료하기전에 스스로 FREE를 하는 모습들이던데....

둘 사이에 차이점은 없나요?
무한루프의 데몬을 만들려고 하다보니 스레드 조인을 해서 스레드 죽는것을 기다릴수가 없어서 2번의 모델로 프로그램을 하려고 하는데 문제가 없는지...고수님들의 조언을 부탁 드립니다.

-----------1번-----------------
void thread_main()
{
    EXEC SQL CONTEXT USE :ctx;

    /* 프로세싱 */

    return;
}

int main()
{
    sql_context ctx;

    EXEC SQL ENABLE THREADS;

    EXEC SQL CONTEXT ALLOCATE :ctx;
    EXEC SQL CONTEXT USE :ctx;
    EXEC SQL CONNECT :connect_info;

    /* 스레드 생성 : context 전달 */
    crate_thread();

    /* 스레드 종료 기다림 */
    EXEC SQL COMMIT WORK RELEASE;
    EXEC SQL CONTEXT FREE :ctx;
    
    return(0);
}
-----------------------------------

--------------2번------------------
void thread_main()
{
    sql_context ctx;

    EXEC SQL CONTEXT ALLOCATE :ctx;
    EXEC SQL CONTEXT USE :ctx;
    EXEC SQL CONNECT :connect_info;

    /* 프로세싱 */

    EXEC SQL COMMIT WORK RELEASE;
    EXEC SQL CONTEXT FREE :ctx;
    return;
}

int main()
{
    EXEC SQL ENABLE THREADS;

    while(1) {
	/* 소켓연결 기다림 */
        crate_thread();
    }

    return(0);
}
-------------------------------------
익명 사용자의 이미지

1,2번의 차이점이라고 하면은 1번은 Context 하나만 사용하고.. 2번은 소켓 연결마다 Context를 설정하기 때문에 1번 보다는 병렬적으로 사용하실수 있다는 점....
소켓 연결이 많게 되면. 사용하실려는 Context에도 제한이 있을수 있습니다.
가능하시면..Context Poll을 만들어서..
DB처리시마다.. Context 요구하여 사용하는 방법이 좀더 좋을것 같습니다.
근데 2번 처리방법에서 process쪽이 무한이라면.. 소켓연결이 들어온 후에 생성된 쓰레드는 어떻게 되나요? 프로세스가 죽기 전까지 리소스가 허용하는 한까지 무한이 생성이 되면 문제가 생기지 않을까 합니다.
세부 사항은 모르지만. 문득 그런 생각이 들기에....
그럼 수고하세요...

댓글 달기

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