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

设计师赚钱的网站山西网站seo

设计师赚钱的网站,山西网站seo,市体育局网站 两学一做,推广方案如何写线程:轻量级的进程,线程的栈区独立(8M),与同一进程中的其他线程共用进程的堆区,数据区,文本区。 进程是操作系统资源分配的最小单位;线程是cpu任务调度的最小单位。 1. 线程的创建…

线程:轻量级的进程,线程的栈区独立(8M),与同一进程中的其他线程共用进程的堆区,数据区,文本区。

进程是操作系统资源分配的最小单位;线程是cpu任务调度的最小单位。

1. 线程的创建:线程由所属的进程创建,进程为其分配独立的栈区空间,堆区,数据区,文本区与其他线程和所在进程共享。

2. 线程调度:宏观并行, 微观串行。

3. 线程的消亡:(1)线程退出,(2) 回收线程资源

进程与线程的区别:

正在执行的程序 ; 轻量级进程。线程一定属于进程。与同一进程中的其他线程共用进程的堆区,数据区,文本区

进程是操作系统资源分配的最小单位;                    线程是cpu任务调度的最小单位。

资源消耗:进程消耗的资源空间大                           线程:消耗的资源空间小,只需分配栈区空间

效率角度:创建线程比创建进程效率高,任务切换跨进程效率低于跨线程

安全角度:由于进程空间独立,所以安全性比线程高。

通信角度:进程间不能直接通信,需要使用进程间通信方式(IPC)实现;线程可以直接通信,比如:全局变量

创建线程:

     int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg);

    功能:创建一个线程

    参数:

         thread: 保存线程ID的变量地址

         attr:线程属性  默认属性:NULL

         void *(*start_routine) (void *) : 线程任务处理函数

         arg:传递给任务处理函数的参数

返回值:成功:0;失败:非0

pthread_self():获取当前线程的id号

线程间通信:1). 全局变量;2). pthread_create传参的方式

2. 线程退出及资源回收
   (1)退出:
        1)在线程任务中调用return;

        2)在线程任务pthread_exit

    (2)回收:

         int pthread_join(pthread_t thread, void **retval);

         功能:阻塞回收线程的资源, 状态

       参数:

                 thread:需要回收的线程ID

                 retval:保存线程退出时的状态,比如return 返回的内容地址
       返回值:成功:0

这里插一下在此能被返回的指针类型:

线程非分离属性:能被pthread_join回收或者能被其他线程结束的线程,称为具有非分离属性的线程。

线程分离属性:不需要回收,或者执行结束会被系统回收的线程,称为分离属性的线程。

直接设置分离属性使用:pthread_detach(pthread_t tid);

也可以这么设置:

1. 定义一个线程属性对象:pthread_attr_t

2. 初始化线程属性对象:pthread_attr_init();

3. 设置线程的分离属性:pthread_attr_setdetachstate();

4. 以分离属性创建线程:pthread_create();

5. 销毁属性对象:pthread_attr_destroy();

线程的互斥:

原因:多个线程在访问(读、写)临界资源时,存在资源竞争。(临界资源:多个线程能够同时操作的资源,比如:全局变量,临界变量)

解决方法:让多个线程访问临界资源时,同一时刻只允许一个线程访问(排他性访问),即互斥

互斥锁:避免多线程的资源竞争,保护临界资源

1. 创建一个互斥锁对象:pthread_mutex_t

2. 初始化互斥锁:pthread_mutex_init();

3. 加锁:pthread_mutex_lock();  阻塞等待锁资源

4. 解锁:pthread_mutex_unlock();

5. 销毁锁:pthread_mutex_destroy();

线程间同步:让多个任务在执行某部分程序时,按照先后顺序执行。以同步方式访问临界资源,具备互斥的效果,同步实现依赖于信号量(资源数)。

步骤:

1. 创建信号量对象:sem_t

2. 初始化信号量:sem_init();

     int sem_init(sem_t *sem, int pshared, unsigned int value);

     功能:初始化信号量

     参数:
            sem:信号量对象

            pshared: 0---》线程间,非0--》进程间

            value:信号量初始化资源数。

3. 申请信号量(P操作):sem_wait();

4. 释放信号量(V操作):sem_post();

5. 销毁信号量:sem_destroy();


 

http://www.mmbaike.com/news/42655.html

相关文章:

  • 全栈网站开发流程图百度的客服电话是多少
  • 网站设置密码进入sem是指什么
  • 深圳博彩软件网站建设seo网络营销课程
  • 网站建设好不好深圳百度推广
  • 杭州网站建设哪家好腾讯控股第三季度营收1401亿
  • 网站开发和运维区别网站优化要做哪些
  • ip网站架设google免费入口
  • 南阳公司做网站武汉百度开户代理
  • 成都园林景观设计公司排名专业搜索引擎seo合作
  • 资源网站推广搜一搜站长工具
  • 网站排名推广软件苏州seo优化
  • 如何规避电子政务网站建设教训16种营销模型
  • 深圳南山 网站建设怎样在百度打广告
  • 开发网站怎样注册公司论文收录网站
  • 免费网站模板 怎么用百度做广告推广怎么样
  • 网站搭建找谁给网站做seo的价格
  • 网站去公安局备案吗中国企业500强最新排名
  • 有域名怎么免费建站百度收录怎么做
  • 注册域名的网站有哪些源码交易平台
  • 烟台市建设工程质量检测网站电商网站
  • 网站图片怎么做优化高端网站定制开发
  • 淘宝客必须建网站吗国外搜索引擎排行榜
  • wamp个人网站开发来源免费建站的网站哪个好
  • 河北百度seo点击软件网站怎样优化seo
  • 上海网站开发技术最好公司电话重庆seo推广
  • 页面精美的网站搜索引擎优化好做吗
  • 阿里云wordpress一键安装包win7优化极致性能
  • 建域名做网站南宁seo排名优化
  • 购物网站建设信息十大流量平台
  • android系统seo自学教程