首页 > 其他分享 >Practice2.多线程

Practice2.多线程

时间:2023-02-09 23:11:56浏览次数:45  
标签:join point Practice2 线程 pthread tid 多线程

实验任务

使用Pthreads库创建多个线程,并观察线程的并发执行现象以及数据共享关系
Monte Carlo技术计算Π值(多线程):
Π = 4 * (圆内点数)/ (总的点数)

image

1.随机的生成一个点Random(x,y),
2.如果这个点在圆内,就用一个变量把它记下来circle_point++
3.如果落在了外边的正方形内部的,也用一个变量记下来square_point++,(square_point就是总的点数)
4.当点越来越多时,就计算Π = (落在圆内部的 ➗ 总的点数量) x 4,点越多越逼近真实的Π的圆周率的值
5.实验题目中的圆的半径是1,原点是0

image
image

当把pthread_join(tid,NULL); 这行代码注释过后,
image

再重新编译执行得到如下结果:
只有In Main thread,
image

如果不是的话就先让ThreadFunc先睡眠3s
image

出现这种情况的原因是:
因为缺少pthread_join(tid,NULL); 导致main函数中的主线程并没有等待新创建的tid线程结束,就直接return了。就如同孤儿进程一样,主线程结束后,在它里面创建的线程自然而然地就不存在了。
image

将pthread_join放在printf("In main thread\n");之后,打印顺序会不同
image

image

多线程并发执行

image

image

image

image

image
Shared data section belongs to process(这个数据段是共享的
,是属于进程的,当前进程的所有线程都可以共享)
image

给主线程也添加上value
image

image

完成实验任务
image

image

image

标签:join,point,Practice2,线程,pthread,tid,多线程
From: https://www.cnblogs.com/Epiephany/p/17107447.html

相关文章

  • 线程的实现方式和多线程模型
    线程的实现方式和多线程模型1、线程的实现方式用户级线程内核级线程2、多线程模型一对一模型多对一模型多对多模型知识回顾......
  • Qt多线程编程之QThread
    背景引言[GUI主线程+子线程]跟C++11中很像的是,Qt中使用QThread来管理线程,一个QThread对象管理一个线程,在使用上有很多跟C++11中相似的地方,但更多的是Qt中独有的内容......
  • Qt多线程编程之QThreadPool 和 QRunnable使用
     说到线程通常会想到QThread,但其实Qt中创建线程的方式有多种,这里主要介绍其中一种QRunnable,QRunnable和QThread用法有些不同,并且使用场景也有区别。要介绍QRunnable的用......
  • 创建 Java 多线程有哪几种方式?
    本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注!作者|慕课网精英讲师ColorfulCJava多线程本篇文章我们介绍一下如何创建线程,创建线程有哪几种方式,线程......
  • java多线程编程核心技术(1丶2章)
    java多线程编程第一章:实现多线程编程主要有两种方式,一种是继承Thread类,另一种是实现Runnable接口。使用继承Thread类的方式创建新线程时,最大的......
  • python 的多线程
    创建一个多线程fromthreadingimportThread,ThreadErrorimporttimedeftask_01():print("开始发送邮件")time.sleep(1)print("邮件发送成功")i......
  • python多线程的问题
    参考:https://stackoverflow.com/questions/20939299/does-python-support-multithreading-can-it-speed-up-execution-timeGIL不会阻止线程。GIL所做的只是确保一次只......
  • 多线程查询数据库避免重复
    contriller:packagebatch;importcom.alibaba.fastjson.JSONObject;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.......
  • Java多线程03——线程安全和线程同步
    1 线程的同步安全1.1线程安全问题设计并发编程的目的是为了使程序获得更高的执行效率,但绝不能出现数据一致性问题。比如多个渠道共同出售电影票,如果没有进行安全控制,就会......
  • Python 高级编程之并发与多线程(三)
    目录一、概述二、并发与并行原理1)并行2)并发3)并发和并行区别三、Python多线程1)进程与线程关系2)Python多线程GIL介绍3)Python创建多线程1、thread2、threading(常用)4)守护线......