본문 바로가기

전공 과목 시험정리/C 프로그래밍

쓰레드 프로그램

서버 소스를 멀티 쓰레드로 돌리기 위해 가져온 예제이다.


이상하게 예제 그대로도 컴파일이 되지 않길래 찾아봤더니

쓰레드를 이용한 프로그램의 컴파일은 gcc 에 lpthread 옵션을 줘야 한다고 되어 있었다..

http://stackoverflow.com/questions/9331863/lpthread-option-of-gcc


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <signal.h>
#include <pthread.h> // gcc  test.c -o test -lpthread
 
 
void* My(void* Para)
{
    int i;
     for(i=0;i<10;i++)
     {
        printf("[+] Child : Hello World ! \n");
        sleep(2);
     }
}
 
 
int main()
{
    pthread_t re;
    int a;
    void* s;
 
    a = pthread_create(&re,NULL,My,NULL);
    
 
    while(1)
    {
        printf("[+] Parent : Hello World !\n");
        sleep(1);
    }
    pthread_join(re,&s);
    printf("%s\n",s);
 
    return 0;
}
cs



소켓의 accept 함수를 멀티 쓰레드로 돌리면 한번에 여러명의 요청을 처리 할 수 있을 것 같다.


하지만 무차별적인 캐릭터 이동은 막아야 하므로 이동 중에는 맵에 대한 lock 을 걸 필요가 있을 것 같다.