在linux下,线程都是通过pthread_create创建的。
线程分为用户线程和内核线程,在windows下,用户线程大都是通过线程库提供的,用户线程依附在内核线程上,一般是一个和多个用户线程对应一个内核线程,内核线程通过线程库完成用户线程的切换。
在linux下,内核线程和用户线程是在创建线程时通过属性参数进行区分的,如下:
#include <string>
#include <pthread.h>
#include <unistd.h>
#include <iostream>
using namespace std;
void* threadFun(void*)
{
for(int i = 0; i < 10; i++)
{
sleep(1);
}
return NULL;
}
int main()
{
pthread_t thread;
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM);
if(!pthread_create(&thread, &attr, threadFun, NULL))
pthread_join(thread, NULL);
return 0;
}
如代码所示,创建系统线程就是通过pthread_attr中设置PTHREAD_SCOPE_SYSTEM设置的。