【发布时间】:2015-02-16 07:09:21
【问题描述】:
我想将 int 变量传递给线程。
我的线程代码:
void record_WAVthread(void* data)
{
int channelId = *(int*)data;
cout<< "\n THREAD CREATED " << channelId;
(...)
_endthread();
}
我的线程创建代码:
extern HANDLE thread_audio_recording[MAX_INPUTS];
extern void record_WAVthread(void* data);
(...)
case 's':
if (!flag_recordingAudio)
{
//start recording
audioRecManager.isRecording = flag_recordingAudio = true;
for (int i = 0; i < 16; i++)
{
thread_audio_recording[i] = (HANDLE)_beginthread(record_WAVthread, 0, &i);
}
}
break;
输出:
THREAD CREATED 0
THREAD CREATED 5
THREAD CREATED 5
THREAD CREATED 9
THREAD CREATED 14
THREAD CREATED 15
THREAD CREATED 12
THREAD CREATED 11
THREAD CREATED 9
THREAD CREATED 12
THREAD CREATED 8
THREAD CREATED 7
THREAD CREATED 4
THREAD CREATED 2
THREAD CREATED 3
THREAD CREATED 6
我做错了什么?我应该得到 1-16。
【问题讨论】:
-
i 从 0 到 15。为什么要得到 1-16?另外,为什么将指向 i 的指针传递给 beginthread?为什么不直接通过 i 呢?
-
真 0-15 我的错。
标签: c++ c multithreading