c++非常简单的线程
C++ very simple thread?
在c++中创建线程的最简单方法是什么?我想用一个已经声明的方法来运行。比如:
void task1(){
cout << "Thread started";
}
thread t1 = thread(task1());
我想我想做一个线程,不需要下载任何库,我的编译器将最有可能编译。我想回答的一个大问题是,c++11是什么?它是一种完全不同的语言,还是一堆库?
c++ 11有线程库。一个非常简单的例子是:
#include <iostream>
#include <thread>
void task1()
{
std::cout<<"Thread startedn";
}
int main()
{
std::thread t1(task1);
t.join();
}
见http://en.cppreference.com/w/cpp/thread/thread
如果您不能使用c++ 11,这取决于您的编程目的。下面这个"尽可能简单"的线程示例是用非托管的Win32代码编写的,使用CreateThread函数:
#include <Windows.h>
#include <tchar.h>
#include <iostream>
using namespace std;
DWORD WINAPI ThreadFunction(LPVOID lpParam) {
WORD numSeconds = 0;
for (;;) {
Sleep(1000);
cout << numSeconds++ << " seconds elapsed in child thread!" << endl;
}
return 0;
}
int _tmain(int argc, _TCHAR* argv[]) {
HANDLE hThread;
DWORD threadID;
WORD numSeconds = 0;
cout << "Hello world" << endl;
hThread = CreateThread(NULL, 0, ThreadFunction, NULL, 0, &threadID);
Sleep(500);
for (;;) {
cout << numSeconds++ << " seconds elapsed in main thread!" << endl;
Sleep(1000);
}
return 0;
}
如果使用这种方法,请记住传递给CreateThread的函数指针必须具有签名:
DWORD ThreadFuncion(LPVOID lpParameter);
您可以在MSDN上找到该签名的描述。
c++标准每隔几年就要修订一次。为了向后兼容,添加了一些很酷的东西,保留了一些旧的东西。这里有一些历史。
Boost在驱动c++标准方面有很好的影响。
相关文章:
- 简单使用 std::atomic 在两个线程之间共享数据
- 多线程 gtkmm 应用程序最简单的示例
- 对于 ~95% 写入/5% 读取线程安全的无序列图,有没有一个简单的解决方案?
- 一个简单的 win32 多线程代码.这能行吗?
- 简单的C++循环无法从多线程中受益
- 需要帮助识别简单多线程代码中的错误
- 从线程输出简单向量
- 简单的非阻塞多线程 tcp 服务器
- 简单的线程池不会嗡嗡作响
- 为什么我不能编译这个简单的线程测试?
- 简单线程程序的链接器错误(缺少boost_chrono符号)
- Valgrind 检查简单多线程 C++11 得到 SIG11 错误
- "永远"阻止线程的最简单便携式方法是什么?
- 有没有一种简单的方法可以使用SFML在后台线程中播放声音
- 是否存在简单的指向布尔值作为线程取消标志的现实情况,无法有效地取消线程?
- 使用简单的过程进行慢速多线程处理
- 为什么对于简单的数组复制来说,没有多线程加速
- 为什么std::async与简单的分离线程相比速度较慢
- 使用 Qt 的简单线程 gui 应用程序的结构是什么?
- C++ 11 线程简单示例