多线程学习一:创建线程

 1 #include <iostream>
 2 #include <thread> //①
 3 void hello() //②
 4 {
 5 std::cout << "Hello Concurrent World\n";
 6 }
 7 int main()
 8 {
 9 std::thread t(hello); //③
10 t.join(); //④
11 }

程序代码如上:

增加了 #include <thread> ①,标准C++库中对多线程支持的声明在新的头文件中:管理线程的函数和类在 <thread> 中声明,而保护共享数据的函数和类在其他头文件中声明。写信息的代码被移动到了一个独立的函数中②。因为每个线程都必须具有一个初始函数(initial function),新线程的执行在这里开始。对于应用程序来说,初始线程是main(),但是对于其他线程,可以在 std::thread 对象的构造函数中指定。

与直接写入标准输出或是从main()调用hello()不同,该程序启动了一个全新的线程来实现,将线程数量一分为二——初始线程始于main(),而新线程始于hello()。

 

时间: 2024-08-24 20:19:49

多线程学习一:创建线程的相关文章

Qt多线程学习:创建多线程

[为什么要用多线程?] 传统的图形用户界面应用程序都仅仅有一个运行线程,而且一次仅仅运行一个操作.假设用户从用户界面中调用一个比較耗时的操作,当该操作正在运行时,用户界面一般会冻结而不再响应.这个问题能够用事件处理和多线程来解决. [Linux有线程的概念吗?] 传统的UNIX系统也支持线程的概念,但一个进程里仅仅同意有一个线程,这样多线程就是多进程.Linux下的Posix线程(pthreads)是一种轻量级的进程的移植性实现,线程的调度由内核完毕,每一个线程都有自己的编号.假设使用线程,整体

Java多线程:如何创建线程?

在前面一篇文章中已经讲述了在进程和线程的由来,今天就来讲一下在Java中如何创建线程,让线程去执行一个子任务.下面先讲述一下Java中的应用程序和进程相关的概念知识,然后再阐述如何创建线程以及如何创建进程.下面是本文的目录大纲: 一.Java中关于应用程序和进程相关的概念 二.Java中如何创建线程 三.Java中如何创建进程 若有不正之处,请多多谅解并欢迎批评指正. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/dolphin0520/p/391351

《多线程编程》——创建线程的两种方式

1.目的 创建线程,即拿到一个线程实例.这个线程实例必须具备开启.等待.唤醒等控制自身生命周期的方法. 2.创建Thread线程 方式一:new Thread().new Thread(String name) 1 /** 2 *两个构造器也有区别:线程名不同 3 */ 4 public class Thread implements Runnable { 5 private char name[]; 6 7 //1.不带参 8 /* 9 *Automatically generated nam

java多线程编程(二创建线程)

1.概念           因为java是完全面向对象的,所以在java中,我们说的线程,就是Thread类的一个实例对象.所以,一个线程就是一个对象,它有自己字段和方法. 2.创建线程 创建线程有2种方法:1.扩展线程父类Thread类 , 2.实现Runnable接口.2种方法是由区别的. 提示:Thread类已经实现了Runnable接口,Thread类中不但实现了run方法,也定义了更多的,全面的线程对象的操作方法,而Runnable接口中只有run这一个方法. 通过扩展Thread类

多线程学习笔记六-------------线程的消亡以及一些常用方法的介绍

多线程wait()和sleep()的区别: 1.wait()可以指定时间,sleep()必须指定时间. 2.在同步中时,对cpu的执行权和处理不同. wait() 释放执行权,释放锁. sleep() 释放执行权,不释放锁. 在同步锁中(synchronized),多线程可能同时进入锁中(多生产者多消费者问题),都被wait(),此时这些线程都释放了执行权并且释放了锁. 当有notifyAll()将其唤醒的时候,这些线程都获得了执行权,只有当执行notifyAll()的线程执行完同步锁内的内容的

java多线程学习-同步之线程通信

这个示例是网上烂大街的,子线程循环100次,主线程循环50次,但是我试了很多次,而且从网上找了很多示例,其实多运行几次,看输出结果并不正确.不知道是我转牛角尖了,还是怎么了.也没有大神问,好痛苦.现在记录在这里,等以后有时间看. import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; p

JAVA多线程学习笔记&lt;3&gt;线程传入参数与终止线程方法

public class TimeThread extends Thread { private long start; public volatile boolean exit = false; public TimeThread(long start) { this.start = start; } public void run() { while(!exit) { long end = System.currentTimeMillis(); long useTime = end - st

多线程学习笔记四--------------线程间通信问题

线程间通信问题: 多个线程在处理同一资源,但是任务却不同: java中将资源共享的方法(思路): 1.方法或者变量静态化---->静态化后,在类加载的时候,会将其加载到内存的方法区进行共享 2.单例设计模式---->保证只对一个实例进行操作. 3.将资源作为操作该资源的类的构造函数的参数,这样可以保证此类的多个对象在使用该资源的时候使用该资源的同一个实例. 现在我们要用第三种方法来进行线程间的通信. 情景:两个线程 ,一个负责输入,一个负责输出:共同处理一个资源. public class T

新兵日记--java多线程学习(一)  --如何创建线程

java 多线程的实现方法 可以通过继承Thread类和实现Runnable接口来实现,而Thread类实际上实现了Runnable接口 ,两种创建线程的方法性质是一样的,并没有什么本质区别 Thread类 1. 创建MyThread 类并继承Thread类 public class MyThread extends Thread{} 2. 在MyThread类中重写 Thread类的run()方法,值得一提的是Thread类的run()方法是实现了Runnable接口,所以继承Thread类和

java多线程学习(二)——线程的创建

一.java创建线程的两个方法 1.从java.lang.Thread类派生出一个新的线程类,重载它的run()方法 2.实现Runnable接口,重载Runnable接口中的run()方法. 使用Thread类来创建线程和创建普通类的对象的操作是一样的,线程是Thread类或者其子类的实例对象. 二.java提供的两种创建线程的区别 java中类是单继承的,当定义一个新的线程类的时候,它只能扩展一个外部类,那么当创建的线程是继承自Thread类来实现的,那么此线程类无法再扩展其他类,无法实现复