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

网站的内链怎么做百度短网址在线生成

网站的内链怎么做,百度短网址在线生成,手机淘宝客网站建设,网站备案到期了怎么办线程 并发执行的轻量级进程 进程是资源分配的最小单位,线程是任务调度的最小单位 线程是进程的一部分,是任务调度的最小单位。一个进程可以包含多个线程,这些线程可以并发执行,共享进程的资源,但每个线程都有自己的…

线程

并发执行的轻量级进程

进程是资源分配的最小单位,线程是任务调度的最小单位

线程是进程的一部分,是任务调度的最小单位。一个进程可以包含多个线程,这些线程可以并发执行,共享进程的资源,但每个线程都有自己的执行路径。在多核处理器上,多个线程可以同时运行,提高了程序的性能和响应能力。下面将对线程的创建、退出、回收和分离

1 创建线程

#include <pthread.h>int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg);

功能:创建子线程去执行任务
返回值:成功返回0,失败返回非0
参数说明
thread:线程对象(线程取个名字)
attr:线程属性,使用默认属性写NULL
start_routine:线程要去执行的任务(任务以函数为单位)

void *dosomething(void *arg);

arg:传递给start_routine的参数

pthread_t th;
pthread_t th1;
int ret = pthread_create(&th, NULL, test, "线程1");
int ret1 = pthread_create(&th1, NULL, test, "线程2");
if(ret != 0 || ret1 != 0){perror("pthread_create");return -1;
}

2 线程退出

void pthread_exit(void *retval);

功能:退出当前线程
参数说明
retval:线程退出时想要传递的信息

在线程执行完任务后,可以调用**pthread_exit(NULL)**来正常退出线程。

3 线程回收

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

功能:阻塞回收退出的子线程
返回值:成功返回0,失败返回-1
参数说明:
thread:要回收的线程
retval:指向线程退出时传递的信息

void *retval;
ret = pthread_join(th, &retval);
ret1 = pthread_join(th1, &retval);
if(ret < 0 || ret1 < 0){perror("pthread_join");return -1;
}

4 线程分离

int pthread_detach(pthread_t thread);

功能:断绝父子线程的关系
返回值:成功返回0,失败返回-1
参数说明:
thread:要断绝关系的子线程对象
注:一般在创建完子线程过后马上调用分离函数

当线程分离后,线程执行完任务后会自动释放资源,不需要再主线程中调用pthread_join()来回收线程。一般在创建完子线程后,如果不需要回收子线程资源,可以立即调用pthread_detach()函数进行分离。

pthread_detach(th);
pthread_detach(th1);

多线程并发

①两个线程同时在打印40个数,各打印个互不干扰。

#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
void *test(void *args){char *name = (char *)args;for(int i = 0; i < 40; i++){printf("线程:%s 正在处理第:%d\n", name, i);}return NULL;
}int main(int argc, char *argv[])
{ pthread_t th;pthread_t th1;int ret = pthread_create(&th, NULL, test, "线程1");int ret1 = pthread_create(&th1, NULL, test, "线程2");if(ret != 0 || ret1 != 0){perror("pthread_create");return -1;}pthread_detach(th);pthread_detach(th1);void *retval;ret = pthread_join(th, &retval);ret1 = pthread_join(th1, &retval);if(ret < 0 || ret1 < 0){perror("pthread_join");return -1;}sleep(2);return 0;
} 

②三个线程共同分担打印50个数

/*===============================================
*   文件名称:并发多线程.c
*   创 建 者:杨桃清
*   创建日期:2023年07月31日 00:22
*   描    述:
================================================*/
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>//声明互斥锁
pthread_mutex_t mutex;
int count = 0;void *print_num(void *args){char *name = (char *)args;while(1){//申请互斥锁pthread_mutex_lock(&mutex);if(count >= 50){//释放互斥锁pthread_mutex_unlock(&mutex);break;}printf("线程:%s  正在打印:%d\n", name, count);count++;//最后释放锁pthread_mutex_unlock(&mutex);}return NULL;
}int main(int argc, char *argv[])
{ pthread_t th1;pthread_t th2;pthread_t th3;//初始化锁pthread_mutex_init(&mutex, NULL);//创3个建线程int ret1 = pthread_create(&th1, NULL, print_num, "th1");int ret2 = pthread_create(&th2, NULL, print_num, "th2");int ret3 = pthread_create(&th3, NULL, print_num, "th3");if(ret1 != 0 || ret2 != 0 || ret3 != 0){perror("pthread_create");return -1;}//void* retval;pthread_join(th1, NULL);//等待第一个线程执行完毕pthread_join(th2, NULL);//等待第二个线程执行完毕pthread_join(th3, NULL);//等待第三个线程执行完毕//销毁互斥锁pthread_mutex_destroy(&mutex);return 0;
} 
http://www.yayakq.cn/news/101067/

相关文章:

  • 网站服务器软件网站建设出现乱码
  • 程序员自己做网站怎么赚钱响应式网站模板 开源
  • 快速学会做网站如何服务器ip地址做网站
  • 网站建设与网页设计是什么意思响应式培训网站模板下载
  • 国外装修效果图网站搜索引擎优化策略包括
  • 嘉兴网站排名公司郑州网站优化汉狮网络
  • 电商网站图片处理网站开发及技术路线
  • 网站后台psd深圳住房和建设局官网网站
  • dedecms网站关键词怎样查网站空间地址
  • 网站建设与实践心得wordpress小工具找不到
  • 上海微网站开发南京哪家网站建设比较好
  • 搜索引擎不友好的网站特征wordpress手机菜单分行
  • 网站设计云匠网wordpress彩虹条代码
  • 有什么做兼职的医疗网站郴州网站建设公司电话
  • 建设网站项目概述网站算阵地建设
  • 上海建设网站是多少计算机专业做网站的开题报告
  • 创建网站的一般步骤胜芳网站建设qiansi
  • 记事本做网站背景色怎么弄做网站大概花多少钱
  • 移动网站 pc网站的区别郑州网站建设制作费用
  • 建设企业网站模板下载wordpress设置发邮件
  • 怎么做网站埋点优良的定制网站建设提供商
  • 营销 推广 网站做电商能赚钱吗
  • jsp如何做网站界面写作网站哪个比较赚钱
  • 怎么建造个人网站哪个搜索引擎最好
  • 网站策划推广方案公司网站制作步骤流程图
  • 杭州网站推广营销服务网站与新闻建设总结
  • 云南网站建设网站运营网站建设中出现的错误代码
  • 产品推广会议流程南宁网站seo公司
  • 凡科网站的排名做不上去WordPress阿里云oos
  • 做网签合同的网站是以应用为导向的高职高专数学课程改革与建设 教学成果奖申报网站