C++11并发编程学习 Day1

从今天开始跟着github上Cplusplus-Concurrency-In-Practice学习C++并发编程,过程中顺带学习C++11,每天做点学习记录。

#include <iostream>
#include <thread>
using namespace std;

void task() {
    cout << "hello" << endl;
}

int main() {
    thread t(task);
    t.join();
    return 0;
}

1. thread这里使用的构造函数原型是

template <class F, class ...Args> explicit thread(F&& f, Args&& ...args);

f这里是task,args使用的可变参数模板,这里没有参数;

2. join()方法是thread的成员函数,表示阻塞当前线程,直至 *this (调用线程)所标识的线程完成其执行。*this 所标识的线程的完成同步于从 join() 的成功返回。

 

  • 使用makefile编译,makefile如下:
all: Thread
CC=g++
CPPFLAGS=-Wall -std=c++11 -ggdb
#LDFLAGS=-pthread

Thread: Thread.o
    $(CC) $(LDFLAGS) -o $@ $^
Thread.o: Thread.cc
    #$(CC) $(CPPFLAGS) -o $@ -c $^
    $(CC) -o $@ -c $^

.PHONY:
    clean
clean:
    rm Thread.o Thread

1. make默认缺省规则是makefile中的第一个规则,一般第一个规则称为all,依赖文件是多个可执行程序;每次执行时,检查all是否需要更新,从而会检查依赖的可执行文件是否需要更新;

2. $@表示目标文件,$^表示所有依赖文件,-c表示只经过预处理、编译、汇编生成目标文件.o,并不链接;

3. .PHONY后面的target是一个伪造的target,不是真实文件,所以当makefile当前目录下存在同名文件时,依然能执行后面的规则。详细可参考 makefile .PHONY作用 makefile .PHONY使用 

4. gcc4.6环境下编译时需要加pthread,否则执行报错,我的是5.4.0,因此没加。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值