게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
c++ 바이블 보고 따라한 예제.. 왜 에러나는걸까요??
게시물ID : programmer_9412짧은주소 복사하기
작성자 : 잘부탁해
추천 : 0
조회수 : 810회
댓글수 : 5개
등록시간 : 2015/04/17 11:31:10
옵션
  • 본인삭제금지
  1. #define _CRT_SECURE_NO_DEPRECATE
  2.  
  3. #include "windows.h"
  4.  
  5. typedef struct SumInfo
  6. {
  7.     int a, b, s;
  8. }SUMINFO, *PSUMINFO;
  9.  
  10. DWORD WINAPI Sum(void* p);
  11. HANDLE g_hConsoleOut;
  12.  
  13. void writeString(LPCTSTR lpszFormat, ...)
  14. {
  15.     char str[1024] = { 0 };
  16.     va_list argList;
  17.     DWORD dwNumberOfBytesWritten;
  18.  
  19.     va_start(argList, lpszFormat);
  20.     wvsprintf(str, lpszFormat, argList);
  21.     va_end(argList);
  22.  
  23.     WriteFile(g_hConsoleOut, str, lstrlen(str)&dwNumberOfBytesWritten, NULL);
  24. }
  25.  
  26. void main()
  27. {
  28.     char temp[1024];
  29.     DWORD dwThreadId, dwExitCode;
  30.     //기본 콘솔 출력 버퍼 오브젝트 핸들을 얻는다.
  31.     g_hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE);
  32.     if (g_hConsoleOut == INVALID_HANDLE_VALUE)
  33.     {
  34.         return;
  35.     }
  36.  
  37.     writeString(TEXT("*** 예제 [Thread] WIN32 API를 이용한 쓰레드 예제 ***\n"));
  38.    
  39.     // 기본 힙 메모리 오브젝트를 이용해서 메모리 할당
  40.     PSUMINFO psi = (PSUMINFO)HeapAlloc(GetProcessHeap()0sizeof(SUMINFO));
  41.     psi->= 1;
  42.     psi->= 100;
  43.     psi->= 0;
  44.  
  45.     HANDLE h = CreateThread(
  46.         NULL//보안속성 SECURITY_ATTRIBUTES 구조체 포인터
  47.         0,  //스레드가 실행될 때 Commit 상태의 스택 크기 설정
  48.         Sum,    //스레드 오브젝트가 실행할 함수 포인터
  49.         psi,    // 스레드 함수에게 전달할 포인터. 일반적으로 데이터를 보냄
  50.         NULL,   //스레드 함수 실행 옵션
  51.         &dwThreadId);   //스레드 아이디를 리턴받는다
  52.  
  53.     if (== NULL)
  54.         return;
  55.  
  56.     // 스레드의 상태를 확인하여 종료될 때를 기다린다.
  57.     while (GetExitCodeThread(h, &dwExitCode))
  58.     {
  59.         if (dwExitCode != STILL_ACTIVE)
  60.         {
  61.             CloseHandle(h);
  62.             break;
  63.         }
  64.         else
  65.         {
  66.             //대기하고 있는 동안 화면에 "."를 찍는다.
  67.             writeString(TEXT("."));
  68.             Sleep(20);
  69.         }
  70.     }
  71.     HeapFree(GetProcessHeap()0, psi);
  72. }
  73.  
  74. DWORD WINAPI Sum(void* p)
  75. {
  76.     PSUMINFO psi = (PSUMINFO)p;
  77.     do //psi->a부터 psi->b까지의 합을 psi->s에 대입한다.
  78.     {
  79.         psi->+= psi->a;
  80.         Sleep(20);
  81.     } while (psi->a++ != psi->b);
  82.     writeString(TEXT("\nSum결과%d\n"), psi->s);
  83.     return psi->s;
  84.  
  85. }
  86.  
이미지 1.png

하 스레드 공부하고있는데..
java -> C로 넘어오려니까 너무 힘드네요 ㅠㅠㅠ

질문드려 너무 죄송합니다 ㅠ


전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호