【发布时间】:2013-05-09 13:06:47
【问题描述】:
我是 C 的新手,我正在尝试编写一个程序来运行 MIDI 序列,基本上,我有两个函数,都运行不同的 MIDI 模式,我需要它们并行运行。由于函数的性质(一个运行序列,另一个播放随机音符),我几乎 100% 确定我不能再运行相同的函数。
我一直在互联网上搜索有关如何使用 pthreads(显然不适用于 Windows?)和 CreateThread() 的一些线索,但我似乎无法让它工作。我目前正在尝试使用 CreateThread() 并尝试引入随机 midi 序列所需的整数,我收到有关“LPTHREAD_START_ROUTINE”的错误,内容为:“预期为“LPTHREAD_START_ROUTINE”,但参数类型为“DWORD (*) (int, int, int)'。
我正在处理的一种伪代码在这里:
DWORD WINAPI solo_thread(int key, int tempo, int scale)
{
///// this contains the random midi notes
}
int backing(int key, int tempo, int backing)
{
HANDLE thread = CreateThread(NULL, 0, solo_thread, NULL, 0, NULL);
if (thread) {
////// this contains the midi sequence
}
希望我已经很好地解释了我的问题......但我很清楚最有可能的情况是我正在以所有错误的方式处理这个 CreateThread() 事情。
谢谢!
【问题讨论】:
-
我不认为多线程会解决你的问题,因为我担心你会陷入如何同步线程的问题。想象一下,如果两个线程中的一个线程比另一个线程获得更多的 CPU 时间并且运行得更快会发生什么......
标签: c windows multithreading winapi createthread