디시인사이드 갤러리

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

갤러리 본문 영역

소스랑 디버깅 시도 화면 -_-;;;;;

주시미갤로그로 이동합니다. 2010.10.12 10:59:09
조회 223 추천 0 댓글 14




main.c야

warning 경고는 pthread_create() 원형이랑 함수를 확인해 봤는데

인자로 넣는 함수는 void *thread_handle(thr_arg *src); <- 얘인데 왜 경고인지 모르겠어

원형을 똑같이 따라했으니 문제있을거라 생각하진 않구...


#include "mergesort.h"

pthread_mutex_t  mutex = PTHREAD_MUTEX_INITIALIZER;

int main(void)
{
 FILE   *fp_source;
 int   i, j, number_thr;
 int   *source_arr[MATRIX_LENGTH];
 int   *merge_problem1[2];
 int   *merge_problem2[MATRIX_LENGTH];
 int   *merge_problem3[MATRIX_LENGTH];
 arr_info  final1, final2, buf_fin;

 pthread_t  p_thread[THREAD_MAX];
 thr_arg   thr_status[THREAD_MAX];

printf("alpha block");  // segmentation fault가 뜨면서 출력이 되지 않음.

 if((fp_source = fopen("array3.txt", "r")) == NULL)
 {
  fprintf(stderr, "error open file array3.txt\\n");
  exit(1);
 }

 fseek(fp_source, 0, SEEK_SET);

 // Store data
 printf("Loading data...");

 for(i=0; i<MATRIX_LENGTH; i++)
 {
  source_arr[i] = (int *)malloc(sizeof(int)*MATRIX_WIDTH);

  for(j=0; j<MATRIX_WIDTH; j++)
  {
   fscanf(fp_source, "%d", &source_arr[i][j]);
  }
  merge_problem2[i] = (int *)malloc(sizeof(int)*MATRIX_WIDTH);
  memmove(merge_problem2[i], source_arr[i], sizeof(int)*MATRIX_WIDTH);

  merge_problem3[i] = (int *)malloc(sizeof(int)*MATRIX_WIDTH);
  memmove(merge_problem3[i], source_arr[i], sizeof(int)*MATRIX_WIDTH);
 }
 fclose(fp_source);

 merge_problem1[0] = (int *)malloc(sizeof(int)*MATRIX_WIDTH);
 merge_problem2[1] = (int *)malloc(sizeof(int)*MATRIX_WIDTH);

 memmove(merge_problem1[0], source_arr[0], sizeof(int)*MATRIX_WIDTH);
 memmove(merge_problem1[1], source_arr[1], sizeof(int)*MATRIX_WIDTH);

 puts("done\\n");

 puts("<MERGE SORT PROBLEM>\\n");

 merge_problem_1(merge_problem1[0], merge_problem1[1]);
 free(merge_problem1[0]);
 free(merge_problem1[1]);

 merge_problem_2(merge_problem2, MATRIX_LENGTH, MATRIX_WIDTH);
 for(i=0; i<MATRIX_LENGTH; i++)
 {
  free(merge_problem2[i]);
 }

 puts("Problem 3...How many threads do you want to create?");
 printf("threads have to be: 2, 4, 8");
 printf("Input << ");
 scanf("%d", &number_thr);


 for(i=0; i<number_thr; i++)
 {
  thr_status[i].src_arr = merge_problem3+((MATRIX_LENGTH/number_thr)*i);
  thr_status[i].nbr_of_line = MATRIX_LENGTH/number_thr;
  thr_status[i].elements_per_line = MATRIX_WIDTH;
  pthread_create(&p_thread[i], NULL, thread_handle, (void *)&thr_status[i]);
 }

 printf("joining threads...");
 for(i=0; i<number_thr; i++)
 {
  pthread_join(p_thread[i], NULL);
 }
 final1.arr = thr_status[0].sorted_arr;
 final2.arr = thr_status[1].sorted_arr;
 
 while(final2.arr != NULL)
 {
  for(i=0; i<number_thr; i+=2)
  {
   final1.arr = thr_status[i].sorted_arr;
   final2.arr = thr_status[i+1].sorted_arr;
   buf_fin.arr = NULL;

   final1.nbr_item = thr_status[i].sorted_nbr_item;
   final2.nbr_item = thr_status[i+1].sorted_nbr_item;
   buf_fin.nbr_item = final1.nbr_item+final2.nbr_item;
   
   buf_fin.arr = (int *)malloc(sizeof(int)*(buf_fin.nbr_item));
   
   merge_sort(final1, final2, &buf_fin);
   free(final2.arr);
   free(final1.arr);

   thr_status[i].sorted_arr = NULL;
   thr_status[i+1].sorted_arr = NULL;

   final1.nbr_item = buf_fin.nbr_item;
   thr_status[i/2].sorted_arr = (int *)malloc(sizeof(int)*(final1.nbr_item));
   
   memmove(thr_status[i/2].sorted_arr, buf_fin.arr, sizeof(int)*buf_fin.nbr_item);
   free(buf_fin.arr);
  }
  number_thr /= 2;
 }
 puts("done");
 printf("%dth number of sorted array: %d\\n", QUEST2_1, thr_status[0].sorted_arr[QUEST2_1-1]);
 printf("%dth number of sorted array: %d\\n", QUEST2_2, thr_status[0].sorted_arr[QUEST2_2-1]);
 printf("%dth number of sorted array: %d\\n", QUEST2_3, thr_status[0].sorted_arr[QUEST2_3-1]);


 for(i=0; i<MATRIX_LENGTH; i++)
 {
  free(source_arr[i]);
 }

 return 0;
}







이건 헤더 파일.

/*******************************************************************
 * <Header>
 * This header includes - header files, declares routines
 *  and constants about merge_sort
 *******************************************************************/
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <math.h>
#include <limits.h>
#include <string.h>
#include <pthread.h>

#define LOOP_ON   1
#define LOOP_OFF  0

// problem number
#define QUEST1_1  1
#define QUEST1_2  986
#define QUEST1_3  1278

#define QUEST2_1  2
#define QUEST2_2  540987
#define QUEST2_3  899743

// MATRIX_WIDTH : the number of lines - a[i][]
// MATRIX_LENGTH : the number of elements of each line - a[][j]
#define MATRIX_WIDTH 1000
#define MATRIX_LENGTH 1000

#define THREAD_MAX  8

typedef struct arr_info{
 int  *arr;
 int  nbr_item;
}arr_info;

typedef struct thr_arg{
 int  **src_arr;
 int  nbr_of_line;
 int  elements_per_line;
 int  *sorted_arr;
 int  sorted_nbr_item;
}thr_arg;

void merge_sort(const arr_info src1, const arr_info src2, arr_info *des);
void merge_problem_1(int *line1, int *line2);
void merge_problem_2(int **arr, const int nbr_of_line, const int elements_per_line);
void *thread_handle(thr_arg *src);

 

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 가족과 완벽하게 손절해야 할 것 같은 스타는? 운영자 24/06/24 - -
226450 일광면 대인배네. [5] ㅁㅇㄹ(121.130) 10.12.22 132 0
226449 홍어형 [4] ㅇ-ㅇ(183.101) 10.12.22 69 0
226447 형들 방학때 공부할거 조언좀 해줘 [6] 옌싱갤로그로 이동합니다. 10.12.22 216 0
226446 크리스마스 [1] 아주아슬갤로그로 이동합니다. 10.12.22 93 0
226445 아....내가 제대로 된 길을 가고있는가... [5] 돌아온yoi(124.153) 10.12.22 145 0
226444 임베디드 개발자는 [4] 저격곰팡이갤로그로 이동합니다. 10.12.22 211 0
226442 HTML이 뭐 그리 쉽나요?? [2] 컴돌이(58.77) 10.12.22 134 0
226440 20분 단위로 배가 아팠다가 안아팠다가 한다 [7] 꿀레갤로그로 이동합니다. 10.12.22 126 0
226439 웹 프로그래밍 할건데 [10] 원싸갤로그로 이동합니다. 10.12.22 194 0
226437 자바 애니메이션 질문 [1] -_-(112.221) 10.12.22 132 0
226436 형들 어깨 아플땐 어떻게 해? [6] 김좆밥갤로그로 이동합니다. 10.12.22 143 0
226435 윈도우 api에서 스크롤바에 대한 질문. [2] 컴돌이(58.77) 10.12.22 90 0
226434 정보보안이 유망한 이유 [3] 홍어(58.180) 10.12.22 231 0
226433 C에서 배열 매개변수로 넘길때 질문! [1] c개초보(180.230) 10.12.22 122 0
226431 자바로 증강현실 구현할수잇나요?? [2] ㅇ;ㅇ(183.101) 10.12.22 153 0
226429 별사탕 OS 드립치던 쉑이는 지금쯤 몰할까? [2] 홍어(58.180) 10.12.22 114 0
226428 네이트 같은데서 앱스 만들려면 어떤거로 만들어야되?? [1] (115.41) 10.12.22 108 0
226427 증가, 감소 연산자 에대해서 질문점요. [6] 시몬갤로그로 이동합니다. 10.12.22 107 0
226424 xml과 php에 대해서 공부할수 있는책 추천부탁 [8] ㄴㅁㅇㅅ(211.58) 10.12.22 145 0
226421 신이 남자에게 여자를 준건 실수였다. [5] 홍어(58.180) 10.12.22 195 0
226420 ★자바국비교육★ 자바오라클 인력패키지 취업교육안내 [3] 중앙인(211.183) 10.12.22 151 0
226419 내가 좋아하는 고삐리 [2] 해일리갤로그로 이동합니다. 10.12.22 217 0
226417 안녕하세요 이번에 컴공과에 입학하는 신입생인데요 [10] 아주아슬갤로그로 이동합니다. 10.12.22 240 0
226416 사고친 막내 여직원 [9] 꿀레갤로그로 이동합니다. 10.12.22 361 0
226415 뉴비인데...방법을 찾다가 찾다가 못찾아서 여기까지 왔네요 ㅠ [10] Function갤로그로 이동합니다. 10.12.22 125 0
226414 보안 떡밥 [4] 넉넉한터갤로그로 이동합니다. 10.12.22 122 0
226413 프로젝트 먹튀 결과 보고. [29] 일광면(211.205) 10.12.22 547 9
226412 해일리 볍진아. [8] 홍어(58.180) 10.12.22 126 0
226411 ㅜㅜ 마니 아파 [3] elwlwlwk갤로그로 이동합니다. 10.12.22 85 0
226410 대기업 가려면 프로그래밍 실력 하~나도 필요 없음 [3] ㅁㄴㄻㄹ갤로그로 이동합니다. 10.12.22 214 0
226409 Emacs 고수분들의 도움을 얻지 못하고 [2] 우분투짱(174.21) 10.12.22 127 0
226408 야 이 씨발새끼들아 [4] 개쉛기갤로그로 이동합니다. 10.12.22 153 0
226406 동생 보고서 쓰는중인데 [3] elwlwlwk갤로그로 이동합니다. 10.12.22 75 0
226405 long int 범위 넘는 소수 계산방법 좀 ㅠ_ㅠ [3] 소수(118.45) 10.12.22 304 0
226403 사람은 가급적이면 존경하지 않는게 좋을거 같어. [16] yundream(211.111) 10.12.22 198 0
226402 구글 번역 jo갓네.. 홍어(58.180) 10.12.22 72 0
226401 아 괴롭다.. [4] 천회장(211.45) 10.12.22 75 0
226400 이정도는 돼야 elwlwlwk갤로그로 이동합니다. 10.12.22 83 0
226399 해일리횽 생일 축하해 [13] 은행강도갤로그로 이동합니다. 10.12.22 113 0
226398 웹은 비대한 플랫폼이다.. 홍어(58.180) 10.12.22 62 0
226397 다음에 앞으로 나란히 라는 웹툰이 있는데 [2] URA!갤로그로 이동합니다. 10.12.22 92 0
226396 블록 다이어그램 무료 툴 없나 [10] prismatic갤로그로 이동합니다. 10.12.22 2401 0
226395 [질문] Emacs + VM 조합 [4] 우분투짱(174.21) 10.12.22 138 0
226394 그러고보니까 예전에 제본세드립 결과가 어떻게 됐는지 아는사람? [4] 페이퍼(112.153) 10.12.22 109 0
226393 인셉션 재밌어 [9] 넉넉한터갤로그로 이동합니다. 10.12.22 108 0
226392 공군 양아치 아니냐? [4] 홍어(58.180) 10.12.22 99 0
226391 김택진 왜 뻘짓하냐 ;; 홍어(58.180) 10.12.22 75 0
226390 혹시 슬라이딩 윈도우 구현 하신분 계신가요? [3] 부탁드립니다(124.111) 10.12.22 164 0
226389 밀갤 훃아들아 프갤이라는델 가려면 어디루 가야해? [조공첨부] [5] 프갤러(121.182) 10.12.22 196 0
226388 메이플 베이컨 먹었는데 elwlwlwk갤로그로 이동합니다. 10.12.22 59 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2