当前位置:编程学习 > C/C++ >>

c++0x 学习笔记之 多线程(1) — 启动线程

by feng

编译环境

编译器: g++ 4.5

编译选项: -std=c++0x

链接选项: –pthread

完整编译链接命令: g++ –O2 –o example example.cc -std=c++0x -pthread

头文件:

条目 头文件
thread <thread>
Mutual exclusion <mutex>
Condition variables <condition_variable>
Futures <future>

a 线程创建

I 从函数中创建

如果想在一个线程中执行一个函数 f ,那么这个线程可以这样创建:

?
1
std::thread t( f );

如果函数有参数,那么直接把参数列在后边即可:

?
1
2
3
4
5
void hello_from( const char* str const )
{
   std::cout << "hello from " << str << " ";
}
std::thread t( hello_from, "thread t" );

多个参数的函数也是如此:

?
1
2
3
4
5
void max( const long m, const long n )
{
    std::cout << "max(" << m << ", " << n << ")=" << (m>n?m:n) << " ";
}
std::thread t( max, 13, 31 );

可以依此类推到3个、4个……参数的函数情形。

只要不把 main 函数也弄进去,编译器统统接受:

?
1
2
3
4
void try_start_program_here()
{
    std::thread t( main ); //error
}
II 从对象/仿函数中创建

把仿函数依样搬进去:

?
1
2
3
4
5
6
7
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,