Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- .net core 7
- Compiler
- C언어
- epoll_wait
- cbpf
- packet filter
- wnourefresh
- doupdate
- epoll
- ioctl
- LOB
- 어셈블리어
- vtable
- level trigger
- mvwin
- Docker
- 취약점
- BOF
- rfc5508
- wrefresh
- iptables
- DOCKER-USER
- packet flow
- edge trigger
- 풀이
- REDIS
- NAPT
- architecture
- ncurses
- .nret core 배포
Archives
- Today
- Total
Tuuna Computer Science
Logic_Game1 Aegis Royale ~ , ~ 본문
문제닷! ???의 값을 구하라는 문제다
처음 쓰레드를 몰랐을 땐 와 저거 어떻게 풀지였는데 윈도우 쓰레드를 배우고 난뒤엔
semaphore께서 이걸 풀어 주시네... ㅎㅎ
일단 내가 짠 알고리즘은 세마포어를 이용해서 i x i 부분이 홀수일 때와 짝수일 때로 나누어서 풀었다.
참고로 이 코드는 소켓 프로그래밍 공부하다가 쓴 코드인데 직접짜기 귀찮아서 예제코드에서 수정해서 썼다. ㅎㅎ
밑엔 코드 ~,~
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 39 40 41 42 43 44 45 46 47 48 49 | #include <stdio.h> #include <windows.h> #include <process.h> unsigned WINAPI Read(void * arg); unsigned WINAPI Accu(void * arg); static HANDLE semOne; static HANDLE semTwo; static int num; static unsigned __int64 a = 1, b = 7, c = 0; int main(int argc, char *argv[]) { HANDLE hThread1, hThread2; semOne = CreateSemaphore(NULL, 0, 1, NULL); semTwo = CreateSemaphore(NULL, 1, 1, NULL); hThread1 = (HANDLE)_beginthreadex(NULL, 0, Read, NULL, 0, NULL); hThread2 = (HANDLE)_beginthreadex(NULL, 0, Accu, NULL, 0, NULL); WaitForSingleObject(hThread1, INFINITE); WaitForSingleObject(hThread2, INFINITE); CloseHandle(semOne); CloseHandle(semTwo); return 0; } unsigned WINAPI Read(void * arg) //짝수 { int i; for (i = 2; i <= 10000; i = i + 2) { WaitForSingleObject(semTwo, INFINITE); c = i * i + b + 5; printf("%d : %lld\n", i, c); ReleaseSemaphore(semOne, 1, NULL); } return 0; } unsigned WINAPI Accu(void * arg) //홀수 { int sum = 0, i; for (i = 3; i <= 10000;) { WaitForSingleObject(semOne, INFINITE); b = i * i + c + 5; printf("%d : %lld\n", i, b); i = i + 2; ReleaseSemaphore(semTwo, 1, NULL); } return 0; } | cs |
'C language' 카테고리의 다른 글
배열을 대상으로 만든 여러 사용자 정의 함수 (헤더파일 제작) (0) | 2018.10.26 |
---|---|
[C 언어] PE View tool 제작하기 (노가다 소스코드) (0) | 2018.09.05 |
[ C 언어 ] 포인터 처음 배울 때 보면 좋은 예제 (0) | 2018.08.05 |
[ C 언어 ] 포인터를 사용해야 하는 이유 (0) | 2018.08.05 |
C언로 만드는 RPG게임 (1) | 2018.06.23 |
Comments