C++ Multi threading
C++ Multi threading
我正在为使命召唤游戏编写一个DLL,我做了很多工作,但我的问题是下面的代码:
int func = 0;
-----
if (cl_ingame=1){ Sleep(35);start(); }
void start()
{
command(x,x, "c "Press up for 11th"");
func = 1;
Sleep(3000);
command(x,x, "c "Press up for Unlock all"");
func = 2;
if (dpad = up){
if (func = 1){
do11th();
}else if (func = 2){
doUnlock();
}
}
现在困扰的不是代码本身,而是无效的"开始"将是一个循环,现在我的问题是,如果游戏已经忙于循环,我将无法使用任何控件或调用任何函数,所以我需要了解如何为C++线程
我知道谷歌是人类最好的朋友,但它并没有真正详细地解释,如果有人能简单地给我一个例子线程像这样
(螺纹){函数}
如何停止线程以及如何调用/启动线程
非常感谢的帮助
启动线程非常简单:
#include <thread>
#include <iostream>
void thread_entry(int arg)
{
std::cout << "Thread running: argument " << arg << std::endl;
}
int main()
{
std::cout << "Thread starting" << std::endl;
std::thread thread(thread_entry, 42);
thread.join();
std::cout << "Thread finished" << std::endl;
}
线程运行时与线程的通信更为复杂。不幸的是,标准C++在高级并发方面仍然相当缺乏,因此首先使用标准库提供的原子变量、互斥对象和条件变量可能是最简单的。简单地停止线程:
#include <thread>
#include <atomic>
#include <iostream>
void thread_entry(std::atomic<bool> & stop)
{
while (!stop) {
std::cout << "Thread running" << std::endl;
sleep(1);
}
}
int main()
{
std::cout << "Thread starting" << std::endl;
std::atomic<bool> stop(false);
std::thread thread(thread_entry, std::ref(stop));
sleep(5);
stop = true;
thread.join();
std::cout << "Thread finished" << std::endl;
}
通常,线程之间的同步很复杂,而且很容易出错。注意尽量减少线程之间共享的数据量,并仔细考虑您对这些数据所做的一切,确保它永远不会被一个线程访问,而另一个线程可能会更改它。
如果你正在编写一个游戏,那么一个更简单的方法可能是单线程事件循环。单个主循环将轮询输入事件,并通知程序的各个组件它们已经发生;他们会相应地更新自己的状态,也许还会产生更多自己的事件。唯一复杂的是,每个事件处理程序都必须快速完成工作,以避免阻塞整个程序。
相关文章:
- 可视化C++:发布模式的运行时库作为'Multi-threaded Debug DLL'
- boost beast Websocket Multi Request Server/Client 并不是真正的 mul
- c++如何使用Curl Multi-Interface连续循环
- 在 R 中调用"multi file C++ code with external libraries referenced"
- 适用于Visual Studio 2017的CMake Multi-Project设置
- 如何将C std ::未来返回值调整到C#System.Threading.tasks.task
- libcurl进度回调无法与Multi一起使用
- 如何使用 std::get 作为 boost-multi-index 容器键的global_fun
- 为什么STD::( multi)集提供非常量迭代方法
- 编译boost时"threading=multi"究竟做了什么
- C++ Multi threading
- C++ Multi-threading?
- Increment a variable string & Multi fstream open c++
- Fortran and C++ threading
- "dynamically allocated memory emulating multi-dimensional array"的正确术语?
- windows c++ multi thread
- c++ boost MPI & threading - 序列化错误:地址未映射
- Qt Multi-Threading
- Armadillo + OpenBLAS multi-threading
- Websphere MQ C++ Multi-threading