标题可能不够清晰,因为我不知道如何定义我的问题.
我理解Pthread是一个符合POSIX标准的线程库(关于POSIX,请参阅维基百科:http://en.wikipedia.org/wiki/Posix).它可以在类Unix操作系统中使用.
关于线程,我读到有三种不同的模型:
用户级线程:内核不知道它.用户自己创建/实现/销毁线程.
内核级线程:内核直接支持进程中的多个控制线程.
轻量级进程(LWP):由内核调度但可以与用户线程绑定.
你有没有看到我的困惑?当我调用pthread_create()
创建一个线程时,我是否创建了一个用户级线程?大概吧.那么我可以说,Pthread为线程提供了用户级解决方案吗?它无法操纵内核/ LWP?
嗯,这一定是个傻瓜.下面是C中不可能更简单的代码.它不能编译说"未定义的睡眠引用".但我想我包括我需要的所有系统头...
#include <stdio.h>
#include <unistd.h>
int main()
{
printf("Test starts.\n");
sleep(1);
printf("Test ends.\n");
return 1;
}
Run Code Online (Sandbox Code Playgroud) 据我所知,当你需要终止一个带有返回值的线程时,pthread_exit()完全等于返回.当人们可以使用一致的方式,即返回,为什么Pthread定义这样一个重复的接口?
我所追求的是这种类型的含义以及可以使用它的界面.
Posix规范中解释了它dev_t
用于设备ID.但是,设备ID对路径描述的任何对象意味着什么,可以是文件,直接,fifo或物理设备?
例如,调用stat()
应该给你一个结构,包括这种类型的成员; 并且您可以在文件系统中统计任何类型的对象.对于不同的文件类型,设备ID应具有不同的含义.
我理解%#x给出了与0x%x相同的效果,它符合POSIX标准.但人们提到一些编译器不支持它.这是真的,任何一个例子?