很抱歉,如果之前有人询问,我没有发现任何类似的问题,其中一个线程写入,一个读取 我找到的所有人都阅读。
我读了这么多,如果你有一个线程在另一个线程读取时写一个帖子,你需要某种锁吗?
但我究竟要做什么?,目前我打算在下面这样做。
int test = 0;
bool testBool = false;
void writeThread() {
while(1) {
test += 1;
testBool != testBool;
Sleep(10); //10 milliseconds wait.
}
}
void readThread() {
while(1) {
int testRem = test % 100;
if((testRem => 0 && testRem < 20) && testBool) {
printf("is this fine? test=%d", test);
}
Sleep(10); //10 milliseconds wait.
}
}
CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)&writeThread,0,NULL,NULL);
CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)&readThread,0,NULL,NULL);
我不担心,如果它错过剩余部分为0,这可能会发生,因为在它读取已经增加超过它的写入之前,但我不担心这个问题抱歉这个坏例子,我只是想确保它不会崩溃,也不会为全局变量提供未定义的行为值。
我将在两个线程中使用bool
来指示是否在两个线程内运行代码(读/写线程)。
在第三个帖子中使用GetAsyncKeyState
更新的bool用于检测按键。
我必须这样做的原因是因为当我在readThread中运行非常缓慢的延迟按键时,我希望能够在readThread暂停时同时获得新更新的int
值延迟按键我可以在一个线程中做,我想通过将更新int
值代码放在一个函数我想,但这个更新int
值必须每10毫秒运行一次,没有任何暂停。 (如果我不能在没有问题的情况下做两个读/写线程,我可能会选择这条路径。)
只要它在int
或bool
的长时间运行后没有崩溃或给我未定义的行为。那很好