자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
C++ Builder Multithread
2017.12.19 08:21
Multithread로 프로그램을 만들었는데 자꾸 엉키고 있어서 어떻게 해결해야 하는 지 도와주시면 감사하겠습니다.
기본적으로 구조는 간단한데 이상하게 안에서 thread 구별용으로 사용하는 mNumber가 실질적으로 해당 thread로 구별하지 않고 자꾸 다른 thread와 엉키는 것 같습니다.
어떻게 프로그램을 짜야 하는 지 도와주시면 감사하겠습니다.
const int ThreadNumber = 40; //총 thread 수 설정
//Thread 선언
class MThread : public TThread {
....
pulbic
int mNumber ; //for thread 구별용
void __fastcall myFunc(void);
.....
}
//myThread 선언
MThread * myThread[ThreadNumber];
void __fastcall MThread::myFunc(void) {
Variable[mNumber] = ... // global 변수
Function(mNumber, .....);
}
void __fastcall MThread::Execute() {
Sunchronize(myFunc);
}
각 thread가 시작된 후 myFunc()이 호출되면 해당 myFunc()이 실행될 때 mNumber로 구별되어 특정 thread에 해당하는 기능이 수행되어야 하는데 그렇게 되고 있지 않습니다. 뭔가 잘못하고 있는 것 같은데 그래서 아래와 같이 바꾸어 보았는데도 잘 안되는군요.
void __fastcall MThread::Execute() {
switch (mNumber) {
case 0:
Sunchronize(myFunc);
...
case 1:
Sunchronize(myFunc);
...
case 2:
Sunchronize(myFunc);
...
}
댓글 0
C++ Builder Multithread
2017.12.19 08:21
Multithread로 프로그램을 만들었는데 자꾸 엉키고 있어서 어떻게 해결해야 하는 지 도와주시면 감사하겠습니다.
기본적으로 구조는 간단한데 이상하게 안에서 thread 구별용으로 사용하는 mNumber가 실질적으로 해당 thread로 구별하지 않고 자꾸 다른 thread와 엉키는 것 같습니다.
어떻게 프로그램을 짜야 하는 지 도와주시면 감사하겠습니다.
const int ThreadNumber = 40; //총 thread 수 설정
//Thread 선언
class MThread : public TThread {
....
pulbic
int mNumber ; //for thread 구별용
void __fastcall myFunc(void);
.....
}
//myThread 선언
MThread * myThread[ThreadNumber];
void __fastcall MThread::myFunc(void) {
Variable[mNumber] = ... // global 변수
Function(mNumber, .....);
}
void __fastcall MThread::Execute() {
Sunchronize(myFunc);
}
각 thread가 시작된 후 myFunc()이 호출되면 해당 myFunc()이 실행될 때 mNumber로 구별되어 특정 thread에 해당하는 기능이 수행되어야 하는데 그렇게 되고 있지 않습니다. 뭔가 잘못하고 있는 것 같은데 그래서 아래와 같이 바꾸어 보았는데도 잘 안되는군요.
void __fastcall MThread::Execute() {
switch (mNumber) {
case 0:
Sunchronize(myFunc);
...
case 1:
Sunchronize(myFunc);
...
case 2:
Sunchronize(myFunc);
...
}