当前位置: 首页 > wzjs >正文

网站打不开是什么原因色盲和色弱的区别

网站打不开是什么原因,色盲和色弱的区别,专门做各种产品测评的网站,dede如何制作网站地图1.进程和线程 进程是分配资源的基本单位 线程是调度的基本单位 线程共享数据集成,但也拥有自己的一部分数据比如:线程id,寄存器,栈,调度优先级 1.1进程的多个线程共享 同⼀地址空间,因此Text Segment、Data Segment…

1.进程和线程

进程是分配资源的基本单位

线程是调度的基本单位

线程共享数据集成,但也拥有自己的一部分数据比如:线程id,寄存器,栈,调度优先级

1.1进程的多个线程共享

同⼀地址空间,因此Text Segment、Data Segment都是共享的,如果定义⼀个函数,在各线程中都可以调 ⽤,如果定义⼀个全局变量,在各线程中都可以访问到,除此之外,各线程还共享以下进程资源和环境:
⽂件描述符表
每种信号的处理⽅式(SIG_ IGN、SIG_ DFL或者⾃定义的信号处理函数)
当前⼯作⽬录
⽤⼾id和组id
进程和线程的关系如下图

2.Linux的线程控制

2.1 POSIX线程库

与线程有关的函数构成了⼀个完整的系列,绝⼤多数函数的名字都是以“pthread_”打头的
要使⽤这些函数库,要通过引⼊头⽂ <pthread.h>
链接这些线程函数库时要使⽤编译器命令的“-lpthread”选项

2.2创建线程

#include <pthread.h>void* thread_task(void* arg) {printf("Thread running! Arg: %d\n", *(int*)arg);return NULL;
}int main() {pthread_t tid;int arg_value = 42;// 创建线程int ret = pthread_create(&tid,   // 线程ID指针NULL,    // 线程属性(默认)thread_task, // 入口函数&arg_value); // 参数if (ret != 0) {perror("Thread creation failed");exit(EXIT_FAILURE);}pthread_join(tid, NULL);  // 等待线程结束printf("Main thread exits\n");return 0;
}
打印出来的 tid 是通过 pthread 库中有函数 pthread_self 得到的,它返回⼀个 pthread_t 类型的
变量,指代的是调⽤ pthread_self 函数的线程的 “ID
int pthread_create ( pthread_t *thread, const pthread_attr_t *attr, void *
(*start_routine)( void *), void *arg);
参数 :
thread: 返回线程 ID
attr: 设置线程的属性, attr NULL 表⽰使⽤默认属性
start_routine: 是个函数地址,线程启动后要执⾏的函数
arg: 传给线程启动函数的参数
误检查:
传统的⼀些函数是,成功返回0,失败返回-1,并且对全局变量errno赋值以指⽰错误。
赋值以指⽰错误
pthreads函数出错时不会设置全局变量errno(⽽⼤部分其他POSIX函数会这样做)。⽽是将错
误代码通过返回值返回
pthreads同样也提供了线程内的errno变量,以⽀持其它使⽤errno的代码。对于pthreads函数的

错误,建议通过返回值业判定,因为读取返回值要⽐读取线程内的errno变量的开销更⼩

2.3 线程终止

如果只需要终止线程而不想去终止进程的话可以有三种方法

1. 从线程函数return。这种⽅法对主线程不适⽤,从main函数return相当于调⽤exit。
2. 线程可以调⽤pthread_ exit终⽌⾃⼰。
3. ⼀个线程可以调⽤pthread_ cancel终⽌同⼀进程中的另⼀个线程
pthread_exit函数
功能:线程终⽌
原型:
void pthread_exit(void *value_ptr);参数:
value_ptr:value_ptr不要指向⼀个局部变量。返回值:
⽆返回值,跟进程⼀样,线程结束的时候⽆法返回到它的调⽤者(⾃⾝)
void* thread_job(void* arg) {// 动态分配返回值(避免栈内存失效)struct Result* res = malloc(sizeof(struct Result));res->data = 100;res->status = 0;pthread_exit(res);
}int main() {pthread_t tid;pthread_create(&tid, NULL, thread_job, NULL);void* retval;pthread_join(tid, &retval);  // 阻塞等待线程结束struct Result* result = (struct Result*)retval;printf("Result: %d, Status: %d\n", result->data, result->status);free(retval);  // 必须手动释放!
}

2.4线程等待

为什么要线程等待?

已经退出的线程,其空间没有被释放,仍然在进程的地址空间内。
创建新的线程不会复⽤刚才退出线程的地址空间
功能:等待线程结束
原型
int pthread_join(pthread_t thread, void **value_ptr);
参数:
thread:线程ID
value_ptr:它指向⼀个指针,后者指向线程的返回值
返回值:成功返回0;失败返回错误码
1. 如果thread线程通过return返回,value_ ptr所指向的单元⾥存放的是thread线程函数的返回值。
2. 如果thread线程被别的线程调⽤pthread_ cancel异常终掉,value_ ptr所指向的单元⾥存放的是常
数PTHREAD_ CANCELED。
3. 如果thread线程是⾃⼰调⽤pthread_exit终⽌的,value_ptr所指向的单元存放的是传给
pthread_exit的参数。
4. 如果对thread线程的终⽌状态不感兴趣,可以传NULL给value_ ptr参数。

2.5 线程分离

在默认的情况下创建的进程都是joinable的,线程退出时需要进行pthread_join操作,否则的话无法释放资源会造成资源的浪费,但是如果我们不关心线程的返回值,这是时候join就成为了一种负担,我们这个时候可以告诉系统线程退出时自动释放资源

int pthread_detach(pthread_t thread)

以是线程组内其他线程对⽬标线程进⾏分离,也可以是线程⾃⼰分离

1 pthread_detach(pthread_self());

include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <pthread.h>
void *thread_run( void * arg )
{
pthread_detach(pthread_self());
printf("%s\n", (char*)arg);
return NULL;
}
int main( void )
{
pthread_t tid;
if ( pthread_create(&tid, NULL, thread_run, "thread1 run...") != 0 ) {
printf("create thread error\n");
return 1;
}
int ret = 0;
sleep(1);//很重要,要让线程先分离,再等待
if ( pthread_join(tid, NULL ) == 0 ) {
printf("pthread wait success\n");
ret = 0;
} else {
printf("pthread wait failed\n");
ret = 1;
}
return ret;
}

下面是线程封装的代码大家有兴趣可以看一下

test_3_27_线程/thread · liu xi peng/linux---ubuntu系统 - 码云 - 开源中国

http://www.dtcms.com/wzjs/30867.html

相关文章:

  • 搭建一个影视网站搜索营销
  • 网站建设素材百度 官网
  • 内部网页制作宁波企业seo推广
  • 建设网站有何要求网站管理工具
  • 开通公司网站怎么做分录百度推广关键词多少合适
  • 旅游网站平台建设方案策划书网站优化推广seo公司
  • 做外贸是网站好还是展会好如何优化网络速度
  • 外贸网站如何做推广国际军事新闻最新消息
  • 公司让做网站违法小说推广关键词怎么弄
  • 廊坊建站软件seo实战培训视频
  • 廊坊做网站优化万网官网
  • 没有网站如何做落地页成都网站推广哪家专业
  • 网站设计谈判软文营销的五大注意事项
  • 莆田网站建设方案报价宁波网络营销有哪些
  • 青岛网站设计建设国际新闻热点事件
  • 如何提交网站连接到百度小红书推广渠道
  • 怎么在拼多多开网店青岛推广优化
  • 禅城区企业网站建设新网站推广方法
  • 中国变装网站教你如何做女人网站管理与维护
  • qq炫舞做字网站软文发布平台排名
  • 大岭山营销型网站建设吸引人的微信软文范例
  • 冠县哪做网站网络营销活动推广方式
  • javaweb网站开发流程网络营销推广计划
  • 河北省网站建设公司廊坊seo网络推广
  • 制作动态网站第一步综合查询
  • 贸易公司做网站怎么样最近的新闻大事20条
  • 推荐西安优秀的响应式网站建设公司东营网站建设哪家更好
  • java做网站怎么验证登录鞋子软文推广300字
  • 在网上做网站seo管理与优化期末试题
  • 外贸网站建设步骤线上推广平台报价