디시인사이드 갤러리

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

갤러리 본문 영역

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

아잉만두갤로그로 이동합니다. 2011.10.14 00:07:27
조회 68 추천 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/08/04 - -
AD 휴대폰 액세서리 세일 중임! 운영자 25/07/28 - -
공지 프로그래밍 갤러리 이용 안내 [92] 운영자 20.09.28 46026 65
2877807 인간은 주변에 자연, 꽃, 나무, 숲 등이 없으면 정신건강이 나빠진다 발명도둑잡기(118.216) 11:48 0 0
2877806 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥꽃보다냥덩♥갤로그로 이동합니다. 11:44 2 0
2877805 내가 생각할때 웹앱개발자들은 걍 자동으로 다해주는거임 [1] 네오커헠(1.237) 11:38 22 0
2877804 강물 ㅇㅅㅇ [2] 헤르 미온느갤로그로 이동합니다. 11:38 8 0
2877803 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 11:36 3 0
2877802 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 11:35 2 0
2877801 ETW 패치함 루도그담당(211.184) 11:31 7 0
2877799 "저새끼 죽으면 노래부르면서 춤출듯" 프갤러(220.84) 11:23 11 0
2877798 ... 배구공(119.202) 11:16 12 0
2877797 대.재.명 ♥꽃보다냥덩♥갤로그로 이동합니다. 11:14 8 0
2877796 흠, 웹쪽은 async에 통신을 일임해도 안뻗나보네 [1] 네오커헠(211.234) 11:13 43 0
2877795 노이즈가 많아서 거르기 ♥꽃보다냥덩♥갤로그로 이동합니다. 11:11 8 0
2877794 히히히 어린이노무현갤로그로 이동합니다. 11:10 20 0
2877793 조명만 바꿔도 분위기가 확 산당 [1] ♥꽃보다냥덩♥갤로그로 이동합니다. 11:08 17 0
2877792 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥꽃보다냥덩♥갤로그로 이동합니다. 11:04 8 0
2877791 아침부터 서비스 장애로 7시 출근함 [2] 아스카영원히사랑해갤로그로 이동합니다. 11:00 34 0
2877790 gradle은 진짜 가젤펀치 마렵네 [2] 헬마스터갤로그로 이동합니다. 10:58 27 0
2877789 동양인 70억 민족성 ㄹㅇ 대단하지않냐?? [1] 뒷통수한방(1.213) 10:54 19 0
2877788 내가 8년전부터 지금까지 계속 하던말들이 무시당하는이유 타이밍뒷통수한방(1.213) 10:53 16 0
2877787 인내심을 시험하지 마시오. [1] 프갤러(220.84) 10:51 23 0
2877786 빨리 이 칼날 위를 걷는 삶이 아닌 [4] ㅆㅇㅆ찡갤로그로 이동합니다. 10:49 28 0
2877785 C++ 쓰는데 [7] 루도그담당(118.235) 10:46 38 0
2877784 오늘도 피곤하구나 [2] ㅆㅇㅆ찡갤로그로 이동합니다. 10:40 26 0
2877783 민생쿠폰때문에 콜센터 전화했는데 뭔 통화료를 부과하냐??? 뒷통수한방(1.213) 10:39 12 0
2877780 씨발 히키새끼야 너 믿고 프로그래밍 공부했다가 시간 날렸다 [8] 프갤러(222.108) 09:53 60 0
2877775 유니티 인디게임 대부분 유저 데이터 암호화해놓냐 [12] 프갤러(118.223) 08:58 80 0
2877774 딱신(211.234) 08:58 17 0
2877773 오늘을 살자 내일도 살리자 [1] 넥도리나(220.74) 08:47 18 0
2877769 개좆되는 게임성만 있으면 [1] 뉴진파갤로그로 이동합니다. 07:45 40 0
2877767 씨발 다시는 히키같은 새끼가 나오면 안 됨 프갤러(222.108) 07:19 32 0
2877763 히키 씨발년 진짜 증오스럽다 개새 [3] 프갤러(222.108) 06:12 57 1
2877760 이거 갖고싶움 ㅇㅅㅇ [3] 어린이노무현갤로그로 이동합니다. 04:15 61 0
2877759 진짜 프로그래머들 이래요? [1] ㅇㅇ갤로그로 이동합니다. 03:59 94 1
2877754 머학에서 수업 30시간 이상 못듣는거 충격적이지않음? [1] 공기역학갤로그로 이동합니다. 02:26 53 0
2877753 메모리랑 io를 원하는 타이밍에 통제못하는게 화남 [1] 공기역학갤로그로 이동합니다. 02:21 50 0
2877750 이렇게 까지 해서 벌어야 하나? ㅇㅇ(175.223) 01:57 30 0
2877749 Rust 특 [2] 프갤러(121.150) 01:45 54 0
2877747 슬슬 오늘도 한권의 책을 다 읽었으니 자야긋다 [2] ㅆㅇㅆ(124.216) 01:29 51 0
2877745 async에 대해서 조금 쉽게 설명을 해주자면 대강 이럼. [1] ㅆㅇㅆ(124.216) 01:25 67 0
2877743 근데 C# 개발자가 async를 안 쓸수가 있나? ㅆㅇㅆ(124.216) 01:17 51 0
2877742 나는 인생에 지향하는 바가 명확하다면 좀 넉넉치않아도 행복하다 생각함 ㅆㅇㅆ(124.216) 01:07 45 0
2877741 가끔은 유학을 사람들이 아예 안 읽어서 참 아쉽단 생각을 해. ㅆㅇㅆ(124.216) 00:59 46 0
2877740 개발자 된지 2년 넘었는데 async가 뭔지 모름 [12] 프갤러(1.245) 00:56 115 0
2877739 안철수씨 말 덜 더듬더라 [2] 헬마스터갤로그로 이동합니다. 00:54 53 0
2877738 중요한건 인생의 경험을 어떻게 자산화 하느냐가 낭비냐 아니냐가 되는거지. [1] ㅆㅇㅆ(124.216) 00:50 48 0
2877737 인생은 남이 보면 지옥이더라도 자기가 만족하면됨. [6] ㅆㅇㅆ(124.216) 00:43 57 0
2877736 인생이 지옥으로 떨어지는 건 한순간이다 [8] 아스카영원히사랑해갤로그로 이동합니다. 00:37 120 1
2877733 하노이의탑 재귀호출 문제 풀다가 자살하고싶어짐 [1] ㅇㅇ(223.39) 08.03 75 0
2877728 113.오구차단 넥도리아(220.74) 08.03 31 0
뉴스 장영란, ‘세월 거스르는’ 수영복 몸매...“몸매 리즈 갱신 중” 디시트렌드 08.02
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2