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

网站建设公司经营/潍坊快速网站排名

网站建设公司经营,潍坊快速网站排名,做网站 需要什么样的服务器,重庆优化网站推广在上一篇文章中对线程进行了简单的概述,它在系统中和编程的应用中,扮演的角色是不言而喻的。学习它、掌握它、吃透它是作为一个程序员的必须作为。在接下来的讲述中,所有线程的操作都是用户级的操作。在LINUX中,一般pthread线程库…

 在上一篇文章中对线程进行了简单的概述,它在系统中和编程的应用中,扮演的角色是不言而喻的。学习它、掌握它、吃透它是作为一个程序员的必须作为。在接下来的讲述中,所有线程的操作都是用户级的操作。在LINUX中,一般pthread线程库是一套通用的线程库,是由POSIX提出的,因此他的移植性是非常好的。

      创建线程实际上就是确定调用该线程函数的入口点,这里通常使用的函数是pthread_create。在线程创建之后,就开始运行相关的线程函数。在该函数运行结束,线程也会随着退出。这是其中退出线程的一种方法,另外一种退出线程的方法就是调用pthread_exit()函数接口,这是结束函数的主动行为。在这里要注意的是,在使用线程函数时,不要轻易调用exit()函数,因为这样会使整个进程退出,往往一个进程包含着多个线程,所以调用了exit()之后,所有该进程中的线程都会被结束掉。因此,在线程中,利用pthread_exit来替代进程中的exit。

      由于一个进程中的数据段是共享的,因此通常在线程退出之后,退出线程所占的资源并不会随着线程的结束而得到释放。正如进程之间可以调用wait()函数来同步中指并释放资源一样,线程之间也有类似的机制,那就是pthread_join函数.pthread_join可以将当前线程挂起,等待线程的结束,这个函数是一个阻塞函数,调用它的函数将一直等待到被等待的线程结束为止,当函数返回时,被等待函数的资源就会被释放。

1、函数语法简述。

pthread_create

头文件:       pthread.h

函数原型:    int pthread_create (pthread_t* thread, pthread_attr_t* attr,

                                                  void* (start_routine)(void*), void* arg);

函数传入值: thread: 线程标识符

                   attr: 线程属性设置

                   start_routine:线程函数入口

                   arg:传递给线程函数的参数

返回值:       0: 成功

                   -1: 失败

pthread_exit

头文件:      pthread.h

函数原型:   void pthread_exit (void*  retval);

函数传入值:retval:pthread_exit()调用者线程的返回值,可又其他函数如pthread_join来检索获取。

phread_join

头文件:      pthread.h

函数原型:   int pthread_join (pthread_t* thread, void** thread_return);

函数传入值:thread:等待线程的标识符。

                  thread_return:用户定义的指针,用来存储被等待线程的返回值(不为NULL值);

函数返回值:成功: 0

                  失败:-1

2、函数举例实现。

view plaincopy to clipboardprint?
#include <stdlib.h> 
#include <stdio.h> 
#include <pthread.h> 
#include <errno.h>  
 
static void pthread_func_1 (void);  
static void pthread_func_2 (void);  
 
int main (int argc, char** argv)  
{  
  pthread_t pt_1 = 0;  
  pthread_t pt_2 = 0;  
  int ret = 0;  
 
  ret = pthread_create (&pt_1, NULL, pthread_func_1, NULL);  
  if (ret != 0)  
  {  
     perror ("pthread_1_create");  
  }  
 
  ret = pthread_create (&pt_2, NULL, pthread_func_2, NULL);  
  if (ret != 0)  
  {  
     perror ("pthread_2_create");  
  }  
   
  pthread_join (pt_1, NULL);  
  pthread_join (pt_2, NULL);  
 
  return 0;  
}  
 
static void pthread_func_1 (void)  
{  
  int i = 0;  
    
  for (; i < 6; i++)  
  {  
    printf ("This is pthread1!/n");  
 
    if (i == 2)  
    {  
      pthread_exit (0);  
    }  
 
    sleep (1);  
  }  
}  
 
static void pthread_func_2 (void)  
{  
  int i = 0;  
 
  for (; i < 3; i++)  
  {  
    printf (This is pthread2!/n);  
  }  
 
  pthread_exit (0);  

#include <stdlib.h>
#include <stdio.h>
#include <pthread.h>
#include <errno.h>

static void pthread_func_1 (void);
static void pthread_func_2 (void);

int main (int argc, char** argv)
{
  pthread_t pt_1 = 0;
  pthread_t pt_2 = 0;
  int ret = 0;

  ret = pthread_create (&pt_1, NULL, pthread_func_1, NULL);
  if (ret != 0)
  {
     perror ("pthread_1_create");
  }

  ret = pthread_create (&pt_2, NULL, pthread_func_2, NULL);
  if (ret != 0)
  {
     perror ("pthread_2_create");
  }
 
  pthread_join (pt_1, NULL);
  pthread_join (pt_2, NULL);

  return 0;
}

static void pthread_func_1 (void)
{
  int i = 0;
 
  for (; i < 6; i++)
  {
    printf ("This is pthread1!/n");

    if (i == 2)
    {
      pthread_exit (0);
    }

    sleep (1);
  }
}

static void pthread_func_2 (void)
{
  int i = 0;

  for (; i < 3; i++)
  {
    printf (This is pthread2!/n);
  }

  pthread_exit (0);
}

在上面的例子中只是简单的创建了线程、主动退出线程和挂起线程。在下一篇文章中,将讲述线程线的属性及其设定。

 

http://www.lbrq.cn/news/1590409.html

相关文章:

  • 深圳网站建设 网络推广/搜索引擎优化的策略主要有
  • 设计素材网站哪个最好推荐/郑州网络营销学校
  • 郑州直销网站制作/seo搜索优化
  • 网网站设计网/免费推广平台排行
  • 怎么做asp网站/抖音seo代理
  • wordpress 分类主题/seo工具有哪些
  • 沈阳做购物网站电话/seo实战密码第三版pdf
  • 网站模板如何用/百度seo还有前景吗
  • 郑州网站建设天强科技/企业做网上推广
  • 十九冶成都建设网站/网站维护是什么意思
  • 定制网站的优势/各大网站
  • 国外网站推广/友情链接查询友情链接检测
  • 专做定制型网站/足球最新世界排名表
  • 政府网站建设 会议/网络营销顾问招聘
  • 做哪个行业的网站好/一键建站
  • 男女插孔做暖暖的试看网站大全/网页开发流程
  • 做网站学什么语言好/百度竞价关键词优化
  • 合肥建设网站资质办理/市场营销推广方案怎么做
  • 那个网站可以查询美做空基金/太原网站制作推广
  • 如何建立国外网站/china东莞seo
  • 下列关于wap手机网站/怎么宣传自己的产品
  • 什么网站可以做兼职 知乎/电商网站推广方案
  • 设计网站视频教程/seo兼职外包
  • 网站建站的标准/人工智能培训班
  • 网站首页三张海报做多大/地推接单平台网
  • wordpress阿里云推送/seo网站推广软件
  • iphone网站/如何建立自己的网站平台
  • 是一个网站或站点的第一个网页/app开发自学
  • 专业烟台房产网站建设/广州优化疫情防控举措
  • 2023年文职招聘岗位表/北京seo网络推广
  • concurrentqueue:一个高并发高性能的C++无锁队列
  • cacti
  • 基于串口实现可扩展的硬件函数 RPC 框架(附完整 Verilog 源码)
  • 【Linux】特效爆满的Vim的配置方法 and make/Makefile原理
  • Spring 的优势
  • Claude Code实战体验:AI智能编程助手如何重塑开发工作流?