디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

스레드 시간측정 질문좀 드릴께요.

아잉만두갤로그로 이동합니다. 2011.10.14 00:07:27
조회 66 추천 0 댓글 4

제가 숫자 n을 입력하면 n만큼 스레드를 만들고 랜덤으로 받은 배열을 n만큼 부분별로 나눠서 스레드가 각자 부분별로 퀵소트를 한다음에 마지막 스레드에서 부분별로 정렬한 배열을 합치는 소스인데 시간측정을 할려고 하는데 계속 0이 나오네요 ; 그래서 정렬이 안됬나 싶어서 출력하면 정렬은 되고 조금 힌트나 조언좀 부탁드릴께요.
#include<stdio.h>
#include<windows.h>
#include<tchar.h>
#include<time.h>
#define MAX_THREADS (10)
DWORD *arr;
DWORD num; //배열을 스레드의 수만큼 나누기 위한 기준
DWORD n; //스레드의 갯수
DWORD count=0; //스레드 카운트
float time_data=0;
CRITICAL_SECTION cs; //공유자원에 동시에 접근하는것을 막기위한 크리티컬섹션
DWORD WINAPI ThreadProc(LPVOID lpParam); //스레드에서 돌아갈 함수 선언
DWORD partition(DWORD,DWORD); //퀵소트에서 피봇값을 정해서 위치를 리턴해주는 함수
void quicksort(DWORD,DWORD); //분할하고 정렬하는 함수
void merge(DWORD,DWORD,DWORD); //부분별로 정렬된 배열을 합치는 함수
int _tmain(int argc,TCHAR *argv[]){
 srand((unsigned)time(NULL)); //배열에 임의의 숫자를 지정해주기 위해서
 DWORD cnt=0;
 DWORD *ThreadID;
 HANDLE *hThread;
 int j;
 DWORD Result=0;
 scanf("%d",&n); // 스레드의 갯수 입력
 ThreadID=(DWORD*)malloc(sizeof(DWORD)*n);  //입력한 숫자 n만큼 스레드 ID 동적할당
 hThread=(HANDLE*)malloc(sizeof(HANDLE)*n); //입력한 숫자 n만큼 스레드의 핸들 동적할당
 arr=(DWORD*)calloc(10000001,sizeof(int));    //배열 동적할당
 for(j=1;j<10000001;j++) arr[j]=rand()%10000000; //배열에 임의의 수 대입
 num=10000000/n;
 InitializeCriticalSection(&cs);
 while(1){             // 스레드 만드는 과정
  if(cnt == n) break;
  hThread[cnt] =
  CreateThread(
   NULL,0,ThreadProc,
   (LPVOID)cnt,
   0,
   &ThreadID[cnt]);
   cnt++;
 }
 Sleep(1000);
 for(DWORD i=0; i<n; i++)   // 스레드가 모든 작업을 마치고 리턴값을 받음
 {
 GetExitCodeThread(hThread[i],&Result);
 CloseHandle(hThread[i]);
 }
 for(j=1;j<1000;j++) printf("%d ",arr[j]);
 DeleteCriticalSection(&cs);
 return 0;
}
DWORD WINAPI ThreadProc(LPVOID lpParam){
 EnterCriticalSection(&cs);
 DWORD start,end,j;
 start=count*num+1;
 end=(count+1)*num;
 if(count==n-1) end=10000000;
 quicksort(start,end);
 count++;
 if(count==n) for(j=0;j<n-1;j++) // 마지막 스레드가 돌아갈때 부분별로 정렬된 스레드를 다 합침
 {
  if(j==n-2) merge(1,(j+1)*num,10000000);
  else merge(1,(j+1)*num,(j+2)*num);
 }
 LeaveCriticalSection(&cs);
 return *arr;
 }
DWORD partition(DWORD start,DWORD end)
{
 DWORD x,i,j,temp;
 x=arr[end];
 i=start-1;
 for(j=start;j<end;j++)
 {
  if(arr[j]<=x)
  {
   i++;
   temp=arr[i];
   arr[i]=arr[j];
   arr[j]=temp;
  }
 }
 temp=arr[i+1];
 arr[i+1]=arr[end];
 arr[end]=temp;
 return i+1;
}
void quicksort(DWORD start,DWORD end)
{
 DWORD q;
 if(start<end)
 {
  q=partition(start,end);
  quicksort(start,q-1);
  quicksort(q+1,end);
 }
}
void merge(DWORD start,DWORD mid,DWORD end)
{
 DWORD i,j,t,*tmp;
 tmp=(DWORD*)malloc(sizeof(DWORD)*(end-start+1));
 i=start;
 j=mid+1;
 t=0;
 while(i<=mid&&j<=end){
  if(arr[i]<=arr[j]){
   tmp[t]=arr[i];
   t++;
   i++;
  }
  else{
   tmp[t]=arr[j];
   t++;
   j++;
  }
 }
 while(i<=mid){
  tmp[t]=arr[i];
  t++;
  i++;
 }
 while(j<=end){
  tmp[t]=arr[j];
  t++;
  j++;
 }
 i=start;
 t=0;
 while(i<=end)
 {
  arr[i]=tmp[t];
  i++;
  t++;
 }
}

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 반응이 재밌어서 자꾸만 놀리고 싶은 리액션 좋은 스타는? 운영자 25/07/28 - -
AD 휴대폰 액세서리 세일 중임! 운영자 25/07/28 - -
283584 po유레카wer (203.237) 11.10.25 36 0
283583 프갤형들 10진수 숫자 2진수로 변환하는거 질문좀요(숙제 ㄴ_ㄴ) [2] ㅋ.ㅋ(119.198) 11.10.25 70 0
283582 하아ㅜ 알고싶다ㅠ [1] 다크엔젤z갤로그로 이동합니다. 11.10.25 37 0
283581 아 젠장 닉세탁 실패... [1] 빅바!갤로그로 이동합니다. 11.10.25 58 0
283575 디시형들 질문있어 미래상담이야 [5] ㅂㄱㅂㄱㅇ갤로그로 이동합니다. 11.10.25 71 0
283574 대륙이라고 무조건 깔건 아닌거 같다.. [4] 쿄스케갤로그로 이동합니다. 11.10.25 99 0
283573 c++ 요번에 배우면서 첨만들어본건데 병신같은점 지적해주세요 [5] 플밍달인(112.186) 11.10.25 106 0
283572 비트 자바 못가르치는 선생 이름 알아봤음 [2] (121.166) 11.10.25 158 0
283570 아스형 직접 보신 분들에게 질문... [7] 빅바!갤로그로 이동합니다. 11.10.25 100 0
283568 안녕하세요 뉴비입니다. [7] 빅바!갤로그로 이동합니다. 11.10.25 74 0
283566 컴공 대학생들 알바할 때 뭐시킴??? [3] ㅇㅇ(203.246) 11.10.25 196 0
283564 포토샵같은 프로그램에 얼굴을 꾸미는 원리가 뭐임?? [5] 촙등이(175.205) 11.10.25 110 0
283563 내가 사장이면 아스같은 게이는 입사 안시킴 [5] Adelposs갤로그로 이동합니다. 11.10.25 100 0
283562 컴돌이 새끼들아 [2] ㅂㅈㄷㄱ(119.197) 11.10.25 74 0
283561 분당살람횽 [1] 로하로하알로하갤로그로 이동합니다. 11.10.25 50 0
283560 형들 스프링책 하나 보려는데 뭐가좋아? [5] 4(222.108) 11.10.25 98 0
283558 API에서 모델리스 다이얼로그를 만드는데 왜 WM_PAINT를 안탈까? [2] +어게인갤로그로 이동합니다. 11.10.25 47 0
283557 오오미 병무청에서 전화 옴 [3] 로하로하알로하갤로그로 이동합니다. 11.10.25 74 0
283556 게임 엔진도 결국 컴퓨터 언어로 작성되어 있잖음 [4] 1(118.220) 11.10.25 118 0
283555 27살 개 백수 인데.... [7] 하루살이류갤로그로 이동합니다. 11.10.25 159 0
283554 서울집값 비정상적이지 않음? [7] 1(118.220) 11.10.25 80 0
283553 버퍼오버플로우가 뭔디? [6] 버퍼링(203.234) 11.10.25 114 0
283552 분당살람의 IT능력이 대단하진 않지만 [5] 분당살람갤로그로 이동합니다. 11.10.25 123 0
283550 포풍잠오네 [3] AS3.0갤로그로 이동합니다. 11.10.25 76 0
283549 아 레알 박정민 책 못보겠다 [1] 11(118.220) 11.10.25 86 0
283548 김현중 개객끼.html [1] ㅇㅇㅇ(121.144) 11.10.25 79 0
283547 공인인증서 에이전트가 생겨도 될 듯 [6] 분당살람갤로그로 이동합니다. 11.10.25 97 0
283546 스마트tv전용 어플 만들려면 [1] ㅎㄺ(203.247) 11.10.25 59 0
283545 편의점서 파는 죽있자나--; [2] !@#ㅇㅇ갤로그로 이동합니다. 11.10.25 64 0
283544 음.. 애들립 카드/음원를 기억하시나요? [4] 애들립(143.248) 11.10.25 55 0
283543 ▶◀ 존 매커시 [2] 1(121.182) 11.10.25 73 0
283541 형들 저좀 도와주세요 [9] 빅바!갤로그로 이동합니다. 11.10.25 86 0
283540 나는 아직 젊은가봐.. [3] 쿄스케갤로그로 이동합니다. 11.10.25 79 0
283538 오실로스코프 마련했어 이모군(175.114) 11.10.25 54 0
283531 근데 학원 누나들 보면 [3] 로하로하알로하갤로그로 이동합니다. 11.10.25 138 0
283530 내용필독!흉들이라면 가능하겟지?도와줘~ [3] 개매너갤로그로 이동합니다. 11.10.25 120 0
283527 형들.. 금감원 들어가서 일하려면 많이 힘들까? ㅠㅠ [2] 수상한김토끼갤로그로 이동합니다. 11.10.25 86 0
283524 아스 횽의 증상을 치료할 수 있는 방법을 생각해보자 [4] McHello갤로그로 이동합니다. 11.10.25 67 0
283523 내가 원치 않게 허세부리게 된 적 [7] 쿄스케갤로그로 이동합니다. 11.10.25 86 0
283521 포트란 행렬곱 이제 진짜 하나다.. 하나만..(121.55) 11.10.25 345 0
283518 근데 상대방이 거짓말이던 허세던 그냥 넘아가는게 좋을때가 많다. [1] 쿄스케갤로그로 이동합니다. 11.10.25 61 0
283514 항상 느끼는거지만 잉여력이 최고인거 같아 벌레는 ㅋㅋ blackd갤로그로 이동합니다. 11.10.25 51 0
283507 아이폰에는 로하로하알로하갤로그로 이동합니다. 11.10.25 45 0
283506 플래시는 이제 찌그러짐? 썬즈갤로그로 이동합니다. 11.10.25 45 0
283505 웹 쪽 잘아는사람... 질문이 있어 [2] 썬즈갤로그로 이동합니다. 11.10.25 68 0
283504 오늘 패딩 입고 출근한 횽들 많나? [3] blackd갤로그로 이동합니다. 11.10.25 84 0
283503 횽들 도대체 [2] 로하로하알로하갤로그로 이동합니다. 11.10.25 46 0
283502 미안 나 급해서.. 세번째 글쓰는건데.. 행렬곱에 관한거야 나 수정좀..(121.55) 11.10.25 37 0
283501 c 공부 방법좀 알렬ㅈ뤄 [1] 1(118.220) 11.10.25 59 0
283500 파판은 시간이 지날 수록 초코보의 귀여움이 사라지는 것 같다 [2] 얼빠진호랑이갤로그로 이동합니다. 11.10.25 90 0
뉴스 기묘한 케이지, 오늘(30일) 정오 버벌진트 '좋아보여' 리메이크 음원 발매 디시트렌드 10:00
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2