Q&A

  • Threads 대한질문


저는 Delphi 초보자 입니다.



다름이 아니오라 Threads 무엇인지 그리고 어떤때 쓰는 것인지 좀 알려주세요 ?



그리고 암호체크 하는 프로그램안에 Creat Thread라는 구문이 있는데



이것은 무엇을 하는건지 좀알려주세요.

1  COMMENTS
  • Profile
    이재식 1999.10.19 21:49
    skh wrote:

    >

    > 저는 Delphi 초보자 입니다.

    >

    > 다름이 아니오라 Threads 무엇인지 그리고 어떤때 쓰는 것인지 좀 알려주세요 ?

    >

    > 그리고 암호체크 하는 프로그램안에 Creat Thread라는 구문이 있는데

    >

    > 이것은 무엇을 하는건지 좀알려주세요.



    이재식 Wrote :

    안녕하십니까?

    스레드는 중요한 개념입니다.

    특히 이것은 학과과정에서 운영체제 시간에 자주 다루는 내용입니다.

    우선 스레드란 한 프로세스안에 존재하는 멀티기능을 실현하기위한

    최소의 실행단위라고 할 수 있습니다.

    여기서, 프로세서와 프로세스는 엄격히 구분됩니다.

    프로세서는 말그래도 CPU를 말하고요, 프로세스는 여러가지로

    정의내릴 수 있지만, 실행중인 프로그램이라고 할 수 있겠죠.

    이 자바나 델파이 등에서 제공되는데요,

    이런경우라고 가정합시다.

    가령, 병합정렬을 한다고 합시다.

    병합정렬 아시죠?

    우리가 이것을 코딩을 합니다.

    그리고나서 실행을 시키죠.

    그러면 하나의 프로세스가 병합정렬을 하죠.

    그런데, 프로세스안에는 여러개의 쓰레드를 만들 수 있어요.

    그래서, 데이터가 1, 5, 4, 3, 2, 1이 있다고 할때,

    하나의 프로세스로만 실행시키면 혼자서 다 하죠.

    그런데, 쓰레드를 생성해서 스레드1는 1, 5, 4를 맡기고,

    쓰레드2는 3, 2, 1를 맡기면 그만큼 빨라지는 거죠.



    가령, 흔한 예입니다만,

    우리가 어떤 처리를 하는데 있어서 중간에 파일에 읽기/쓰기를 한다고

    합시다.

    그런데, 이 읽기/쓰기의 결과는 뒤에 있는 어떤 코딩과는 그리 상관이

    없다고 합시다.

    그러면 사용자가 쓰레드를 생성해서 하나는 일기/쓰기를 하라고

    그러고, 나머지 쓰레드는 계속해서 자신의 일을 할 수 있게 하는거죠.

    그런데, 이 문제를 쓰레드로 안하면 프로세스는 일을 하다가

    I/O처리가 있을때는 계속 그 일을 처리하죠.

    그 일이 다 끝나야 뒤에 있는 코딩을 실행하는건데, 그러면

    그만큼 I/O처리때문에 처리가 늦어지는 거죠.



    이 쓰레드 개념은 델파이책에서도 그리 많이 나와있지 않습니다.

    운영체제 책을 보시거나 아니면 따로 책(원서)이 있습니다.

    쓰레드만 다룬 책도 많죠. 다만 주로 원서라서...



    그리고, 암호체크 말이죠.

    우리가 간단한 암호라면 금방 연산을 해서 encryp하고 decrypt하죠.

    그런데, 그렇게 간단한 암호라면 누구나 풀 수 있죠.

    그래서, 암호와 알고리즘은 매우 복잡한 연산을 거쳐서 만들고 또

    풀기고 합니다.

    가령, RSA같은 경우는 아마 경우수로 따지면 지구가 꽤 오랫동안 돌아야

    될걸요



    그래서, 이러한 복잡한 암호도 하나의 단일 프로세스가 처리하는것이

    아니라(그럼 시간이 오래걸리니까요), 프로세스내에 쓰레드를

    만들어서 병렬처리를 하려는 거죠.

    그러면, 그만큼 빨리 풀고 빨리 암호화할 수 있죠.



    그래서, 사용자가 쓰레드 개념으로 작업을 하고 싶다면,

    create thread...

    이런식으로 스레드를 생성하고 ID를 부여해서 작업을 맡기는 것입니다.



    그럼...도움이 되셨기를 진정 바랍니다.