vc++ 控制台多线程编写的问题,跪求高人解答!

发布网友 发布时间:2022-04-24 17:02

我来回答

2个回答

热心网友 时间:2023-10-24 14:00

你搞错 C++程序的线程思想!main和WinMain函数为入口函数,本身已为主线程,主线程标识应用程序生存期。把主函数从线程回调函数中移出来,你这样哪是线程同步啊?直接在主函数中CreateThread传递线程回调地址即可。 再说你有同步吗?一个全局变量竟然被主线程和其它线程同时访问!请使用InterlockedIncrement,数值同步可以使用interlock系统用户态同步函数;也可以使用CreateEvent,CreateMutex,CreateSamphore等内核事件同步;也可以使用EnterCriticalSection对临界区进行同步。推荐使用Mutex同步,Mutex内核对象是线程占有方式,一个线程占有另一个请求的线程将被阻塞。

用法:
HANDLE hMutex = CreateMutex(NULL, FALSE, NULL); //请求内核对象

WaitForSingleObject(hMutex, INIFINTE); //请求进入

ReleaseMutex(hMutex); //释放占用权

CloseHandle(hMutex); //关闭内核对象

热心网友 时间:2023-10-24 14:01

没有同步的原因追问只是cout 没有涉及变量的赋值,不应该需要数据同步呀!

追答cout 是面向流的,那么在COUT输出时就有一个位置的问题。同步吧,没别的法

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com