디시인사이드 갤러리

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

갤러리 본문 영역

형들 코드 테스트좀 해줘 부탁이구만

yundream(211.189) 2010.03.03 12:08:03
조회 152 추천 0 댓글 1

윈도 에서 조건 변수 테스트 인디. 관련 함수가 비스타/서버 2008 이상에서 지원하는 거라서 내꺼 xp에서는 테스트가 안되는 구만.

프로그램 1부터 100까지 더하는 프로그램인데, 4개의 쓰레드가 25개씩 나누어서 계산을 하고 그 결과를 전역변수(배열)에 적어 놓으면, 나중에 메인 쓰레드가 결과를 전부 더해서 최종 결과를 내놓는거야. 간다한 분산 처리 프로그램.
입력할 100개의 데이터는 메인 쓰레드가 생성을 하고, 그동안 워커 쓰레드들이 기다려야 하는데 조건 변수로 기다리게 했어.
그럼 결과가 잘 나오는지 형들 좀 부탁해.

참고로 아래의 코드를 pthread로 그대로 구현한 리눅스 버전은 문제 없이 작동했구만.

#include <windows.h>
#include <stdio.h>
#define ARRAY_SIZE 100
#define THREAD_NUM 4

struct data_info
{
        int *d_point;
        int idx;
};
int *data_array;
int sum_array[THREAD_NUM];
CRITICAL_SECTION   CSLock;
CONDITION_VARIABLE CalcReady;


DWORD WINAPI t_func(void *data)
{
        int i=0;
        int sum = 0;
        struct data_info d_info;

        d_info = *((struct data_info *)data);
        EnterCriticalSection(&CSLock);
        SleepConditionVariableCS(&CalcReady, &CSLock, INFINITE);
        LeaveCriticalSection(&CSLock);


        for (i = 0; i < 25; i++)
        {
                sum += d_info.d_point[d_info.idx * 25];
        }

        printf("%d %d\\n", d_info.idx, sum);
        sum_array[d_info.idx] = sum;
        return 0;
}

int main(int argc, char **argv)
{
        int i = 0;
        int sum = 0;
        struct data_info d_info;

        DWORD dwThreadArray[THREAD_NUM];
        HANDLE hThreadArray[THREAD_NUM];

        InitializeCriticalSection (&CSLock);
    InitializeConditionVariable (&CalcReady);

        data_array = malloc(sizeof(int)*ARRAY_SIZE);

        for (i = 0; i < THREAD_NUM; i++)
        {
                d_info.d_point = data_array;
                d_info.idx = 1;
                hThreadArray[i] = CreateThread(NULL, 0, t_func, (void *)&d_info,
                        0, &dwThreadArray[i]);
                Sleep(10);
        }

        for(i = 0; i < ARRAY_SIZE; i++)
        {
                *data_array = i;
                *data_array++;
        }
        WakeAllConditionVariable(&CalcReady);

        WaitForMultipleObjects(THREAD_NUM, hThreadArray, TRUE, INFINITE);
        for (i =0; i < THREAD_NUM; i++)
        {
                CloseHandle(hThreadArray[i]);
                sum += sum_array[i];
        }

        return 0;
}

추천 비추천

0

고정닉 0

0

댓글 영역

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

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 이성보다 동성에게 매력을 더 어필할 것 같은 남자 스타는? 운영자 24/07/29 - -
178815 정치적 정치적.. [1] Pupustory갤로그로 이동합니다. 10.04.02 65 0
178814 [공지] 호출하지마 닉을 쓰는 사람은 [2] LightEach갤로그로 이동합니다. 10.04.02 126 0
178813 싸이 다이어리 털기 [2] LazyGyu갤로그로 이동합니다. 10.04.02 179 0
178811 이봐 존슨 [4] 연화갤로그로 이동합니다. 10.04.02 144 0
178810 대학문제 나오는데.. [4] 호출하지마(125.185) 10.04.02 128 0
178808 LightEach 이님은.. [33] 호출하지마(125.185) 10.04.02 222 0
178807 나는 어제 수서역에서 물속의다이아횽과 [1] 유리한갤로그로 이동합니다. 10.04.02 116 0
178806 java 왜 에러가 나는지 모르겠슴여.. [2] usoo0갤로그로 이동합니다. 10.04.02 87 0
178805 winapi 질문 드려요!! [6] zergadis갤로그로 이동합니다. 10.04.02 133 0
178804 노트북을 주문했는데, OS가 다르다 [3] Vita500갤로그로 이동합니다. 10.04.02 147 0
178803 연애 안한지 5년째 [5] ㅂㅂ(210.117) 10.04.02 126 0
178802 안녕하세요 블랙코더가 되고 싶은데요. [4] 씬입사원갤로그로 이동합니다. 10.04.02 142 0
178801 아 죄송해요 논란만 일으키고 ㅠㅠ [11] 123(211.212) 10.04.02 141 0
178796 아오 시밤 빡쳐 왜 학점=실력 이 아닌지 알겠슴녀 ㅈㄴ 열받네영 [26] 형들아(220.73) 10.04.02 319 0
178795 하루 일당 5000원 [6] 이모군(175.114) 10.04.02 130 0
178794 저에게 도움을 주신 fguy 님에게 감사드립니다. [8] 초보플머(61.77) 10.04.02 168 0
178793 기모고소새키야 [3] 유리한갤로그로 이동합니다. 10.04.02 91 0
178792 걍 플래쉬는 버리고.. [7] yundream(203.130) 10.04.02 145 0
178791 금욜부터... [2] sh(68.147) 10.04.02 106 0
178790 외계달팽만 봐.. [12] Pupustory갤로그로 이동합니다. 10.04.02 124 0
178789 [찝찝한 마음이 남아서...] 책으로 공부하는 방법 [2] 초보플머(61.77) 10.04.02 148 0
178787 웹메신저 만드는중인데... 온라인/오프라인 세션관리 [5] ㅁㄴㅇㄹ(203.253) 10.04.02 106 0
178786 오늘이 정모인데 왜 장소 공지가 없어!!! [5] 중달(121.166) 10.04.02 130 0
178784 아이패드 관심없었는데 요고 보니깐 존나 꼴린다 ㅠ [4] qq(210.117) 10.04.02 171 0
178783 이번 정모에 많이 참석해 주세요 [6] 유리한갤로그로 이동합니다. 10.04.02 147 0
178781 프로그래밍을할수록 도메인지식의 후달림을 느낀다 사과갤로그로 이동합니다. 10.04.02 86 0
178780 캠핑 다녀왔었다능 [11] Algo(24.16) 10.04.02 102 0
178779 근데 어떻게 핸드폰 보안카드를 뚫을수있는거지? [12] 켁큇갤로그로 이동합니다. 10.04.02 155 0
178778 초보플머가 2년간 읽은 책들 중에서 손에 꼽는 책 5권 [3] 초보플머(61.77) 10.04.02 271 0
178777 4월 9일 정모 참석자 중 일산 -> 정모장소 가는길 사람 있니 ? [11] Pupustory갤로그로 이동합니다. 10.04.02 111 0
178776 fguy횽의 이야기를 끝까지 보고싶어요 [1] marax갤로그로 이동합니다. 10.04.02 107 0
178775 we rule [6] 유리한갤로그로 이동합니다. 10.04.02 76 0
178774 요며칠 이 백신 저 백신 돌려본 결과... [13] 무한지대갤로그로 이동합니다. 10.04.02 198 0
178773 후로야구 돡갤에서 놀러왔는데 이런글 올려도 되낭 -.- [28] 캐노비갤로그로 이동합니다. 10.04.02 226 0
178771 안드로이드폰 프로그래밍중 질문좀ㅠㅠ [9] zzzz(210.110) 10.04.02 152 0
178769 java gui를 비주얼베이직처럼 할 수 있는게 있을까요? [5] 초보학생(165.194) 10.04.02 126 0
178767 형들 궁금한게 있어여 [3] 히힝(220.68) 10.04.02 52 0
178766 존슨이 무슨뜻인지 검색해봤다 [10] Vita500갤로그로 이동합니다. 10.04.02 1296 0
178765 횽두랑 ㅠ.ㅠ 디스크 조각모음이 안됑!! 왜 안되는 걸가 [4] 미안해갤로그로 이동합니다. 10.04.02 96 0
178764 해킹피해로 현금 1000만원 피해를 입었습니다.. 도와주세요.. [45] LINK(202.136) 10.04.02 388 0
178763 존슨의 발기를 그래픽으로 승화해봤습니다 [9] McHello갤로그로 이동합니다. 10.04.02 230 0
178762 아오 빡쳐. WinCE 빡치는 OS 아오~~ [11] 씬입사원갤로그로 이동합니다. 10.04.02 144 0
178761 우왕.. ActiveX 떡밥 [2] 외계달팽갤로그로 이동합니다. 10.04.02 91 0
178758 [SQL 팁] 중복 데이터 제거 [13] GISMAN갤로그로 이동합니다. 10.04.02 475 0
178755 안녕하세요 뉴비가 질문드려요 [3] 질문있씁니당(165.244) 10.04.02 66 0
178754 ㅅㅂ 볍진같은 플래시 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ [8] McHello갤로그로 이동합니다. 10.04.02 135 0
178750 안녕하십니까(__ 늅늅이가 질문하나드리옵니다. 병렬처리프로그래밍 [5] 뉴뉴늅이(203.253) 10.04.02 95 0
178749 박영선의원 대단하네.. [8] ㅇㅇㅃ갤로그로 이동합니다. 10.04.02 199 0
178745 에잇 아침부터 [1] LazyGyu갤로그로 이동합니다. 10.04.02 74 0
178744 주시미 And 사과 보시오 [2] LightEach갤로그로 이동합니다. 10.04.02 81 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2