
在主函数之前创建线程?你是说在主函数返回之前创建线程,还是说主函数执行之前创建线程?
线程是程序最基本的运行单位,而进程不能运行,所以能运行的,是进程中的线程。进程仅仅是一个容器,包含了线程运行中所需要的数据结构等信息。一个进程创建时, *** 作系统会创建一个线程,这就是主线程,而其他的从线程,却要主线程的代码来创建,也就是由程序员来创建。
一般地,线程的调度(也就是什么时候运行,什么时候暂停运行)由 *** 作系统来负责,但你也可以显式地挂起其他的线程,或继续其他线程的运行。
对于线程,你可以把它看作是一个运行的轨迹,而多个线程,你可以看作是你的程序的不同的代码在并行地运行,而不是串行的运行(当然,实际上对于单CPU来说,多线程也是串行运行的,不过从宏观上来看,多线程是并行执行的),也就是说,你的几个线程在同时执行任务。这样一来,你就可以让不同的线程来执行不同的任务,它们之间互相不干扰,比如你可以创建一个线程用来响应界面的消息,另一个线程来做实际的工作,这样就不会由于需要计算的东东太多而导致界面失去响应,看上去跟死了一样了。
pthread_join 线程停止等待函数没有调用
pthread_create 线程生成后,没有等子线程停止,主线程就先停止了。
主线程停止后,整个程序停止,子线程在没有printf的时候就被结束了。
结论:不是你没有看到结果,而是在子线程printf("\n");之前整个程序就已经停止了。
#include <stdioh>
#include <stdlibh>
#include <sys/typesh>
#include <stringh>
#include <unistdh>
#include <pthreadh>
#define FALSE -1
#define TRUE 0
void shuchu( void dumy )
{
int j;
printf("\n");
}
int main()
{
int i = 0;
int rc = 0;
int ret1;
pthread_t p_thread1;
if(0!=(ret1 = pthread_create(&p_thread1, NULL, shuchu, NULL)))printf("sfdfsdfi\n");
printf("[%d]\n",p_thread1);
pthread_join(p_thread1, NULL);
return TRUE;
}
你好。 在分时系统里应该没什必要吧 setpriority/getpriority,这两个函数描述的是改变进程优先级。 但是在linux中线程就是一个轻量级的进程, 所以这两个函数是可以作用于单独的线程的 如果我的回答没能帮助您,请继续追问。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)