서버 소스를 멀티 쓰레드로 돌리기 위해 가져온 예제이다.
이상하게 예제 그대로도 컴파일이 되지 않길래 찾아봤더니
쓰레드를 이용한 프로그램의 컴파일은 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 을 걸 필요가 있을 것 같다.
'전공 과목 시험정리 > C 프로그래밍' 카테고리의 다른 글
Fate 서버 소스 (미완성) (0) | 2015.04.25 |
---|---|
fork 로 프로세스 생성 후, 프로세스간 변수 공유 (0) | 2015.04.25 |
웹에서 서버정보 파싱 (0) | 2015.04.25 |
알고리즘 대결 서버 소스 (0) | 2015.04.25 |
동기 소켓 vs 비동기 소켓 (0) | 2015.04.24 |