0.C++11提供的std::mutex类
1)创建线程
#include <iostream>
#include <thread>
#include <stdio.h>
using namespace std;
void threadproc1()
{
while(true)
{
printf("I am New Thread 1!\n");
}
}
void threadproc2(int a,int b)
{
while(true)
{
printf("I am New Thread 2!\n");
}
}
void func()
{
std::thread t(threadproc1);
t.detach();
}
int main()
{
std::thread t1(threadproc1);
std::thread t2(threadproc2,1,2);
while(true)
{
}
return 0;
}
2)获取线程ID的方法
- 1)pthread_create的第一个参数
- 2)调用pthead_self();
#include <pthread.h>
pthread_t tid = pthread_self();
#include <sys/syscall.h>
#include <unistd.h>
int tid = syscall(SYS_gettid);
- 4)C++ 11获取当前线程的ID的方法
- 类静态方法:std::this_thread类的get_id获取当前线程的ID
- 类实例方法:std::thread的get_id获取指定线程的ID
- get_id方法返回的是一个std::thread::id的包类型,该类型不可以被直接强转成整型,C++11线程库也没有为该对象提供任何转换成整型的接口。
1)一般用
法一法二获取线程ID的结果是一样的,都是pthread_t类型,输出的是一块内存空间地址,可能不是全系统唯一的,一般是很大的数字(内存地址)。而法三获取的线程ID是系统范围内全局唯一的,一般是不大的整数,也就时LWP的ID
1. std::mutex系列
2.std::shared_mutex
3.std::condition_variable
|