首页编程c++多线程编程?boost多线程编程

c++多线程编程?boost多线程编程

编程之家2026-05-291135次浏览

这篇文章给大家聊聊关于c++多线程编程,以及boost多线程编程对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

c++多线程编程?boost多线程编程

关于C++多线程编程教学

在Windows NT和Windows 9x中,多线程的编程实现需要调用一系列的API函数,如CreateThread、ResumeThread等,比较麻烦而且容易出错。我们使用Inprise公司的新一代RAD开发工具C++Builder,可以方便地实现多线程的编程。与老牌RAD工具Visual Basic和Delphi比,C++Builer不仅功能非常强大,而且它的编程语言是C++,对于系统开发语言是C的Windows系列操作系统,它具有其它编程语言无可比拟的优势。利用C++Builder提供的TThread对象,多线程的编程变得非常简便易用。那么,如何实现呢?且待我慢慢道来,让你体会一下多线程的强大功能。

1.创建多线程程序:

首先,先介绍一下实现多线程的具体步骤。在C++Builder中虽然用Tthread对象说明了线程的概念,但是Tthread对象本身并不完整,需要在TThread下新建其子类,并重载Execute方法来使用线程对象。在C++Builder下可以很方便地实现这一点。

在C++Builder IDE环境下选择菜单File|New,在New栏中选中Thread Object,按OK,接下来弹出输入框,输入TThread对象子类的名字MyThread,这样C++Builder自动为你创建了一个名为TMyThread的TThread子类。同时编辑器中多了一个名为Unit2.cpp的单元,这就是我们创建的TMyThread子类的原码,如下:

#include

#pragma hdrstop

c++多线程编程?boost多线程编程

#include“Unit2.h”

#pragma package(smart_init)

//---------------------

// Important: Methods and properties of objects in VCL can only be

// used in a method called using Synchronize, for example:

//

c++多线程编程?boost多线程编程

// Synchronize(UpdateCaption);

//

// where UpdateCaption could look like:

//

// void __fastcall MyThread::UpdateCaption()

//{

// Form1->Caption=“Updated in a thread”;

//}

//--------------------

__fastcall MyThread::MyThread(bool CreateSuspended)

: TThread(CreateSuspended)

{

}

//--------------------

void __fastcall MyThread::Execute()

{

//---- Place thread code here----

}

//---------------------

其中的Execute()函数就是我们要在线程中实现的任务的代码所在处。在原代码中包含Unit2.cpp,这个由我们创建的TMyThread对象就可以使用了。使用时,动态创建一个TMyThread对象,在构造函数中使用Resume()方法,那么程序中就增加了一个新的我们自己定义的线程TMyThread,具体执行的代码就是Execute()方法重载的代码。要加载更多的线程,没关系,只要继续创建需要数量的TMyThread对象就成。

C++多线程编程问题

多线程工作可以提高解决问题的速度

你举得例子可以多线程实现,但是更多的人称之为分布式计算

多线程主要是创建多个线程,每个线程负责自己的事情,每个线程只对主线程负责

至于解决问题的速度应该可以达到提高一半,但是你要注意资源的互斥,互斥处理不好估计会事倍功半

求JAVA多线程编程代码

测试过了,没问题。基本思路,实例化一个桥类,谁得到桥的可用标志谁过桥。

我第一个看到这个100分的,说实话,知道你是个学生要代码而已,线程类好久没练手了,练习一下而已,否则真不会给你写代码。因为我读书的时候也发过类似的求助,知道什么感受。不懂的时候真的没办法,所以告诉你思路。

package cn.thread;

public class Through_out_bridge{

public static void main(String[] args){

Bridge b= Bridge.getInstance();//实例化桥

//实例化左端9个人,此时所有人都不能过桥,桥的可以状态标志为不可以用

for(int i= 1; i<= 9; i++){

Thread t= new Thread(new Person(false, i, b));

t.start();

}

//实例化右端12个人,此时所有人都不能过桥,桥的可以状态标志为不可以用

for( int i=1;i<=12;i++)

{

Thread t= new Thread(new Person(true,i,b));

t.start();

}

//桥的可用状态给左端第10个人,可以自定义给谁

b.state= true;

Thread t= new Thread(new Person(false, 10, b));

}

}

class Person implements Runnable{

public Bridge bridge;//桥

private String hand;//在桥哪一端

int No;//序号

public Person(boolean side, int i, Bridge bridge){

this.No= i;

this.bridge= bridge;

if(bridge.state)

{

System.out.println(i+"已经过桥。");

}

if(side){

this.hand= new String("右");

} else{

this.hand= new String("左");

}

}

//过桥方法

public synchronized void through() throws InterruptedException{

if(bridge.state){

System.out.println(hand+"边第"+No+"在过桥");

bridge.open( No);

} else{

bridge.lock(No);

}

}

public void run(){

try{

Thread.sleep(1000);

// System.out.println(No+hand+"边已经过桥!");

through();

} catch(InterruptedException e){

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

class Bridge{

//可用状态判断true:可用

public boolean state= false;

//自行实例化

public static Bridge getInstance(){

return new Bridge();

}

public synchronized void open(int i) throws InterruptedException{

if(state){

Thread.sleep(1000);

this.state=true;

notify();

}

}

public synchronized void lock(int i) throws InterruptedException{

if(!state){

this.state=false;

System.out.println(i+"在等待.");

wait();

}

}

}

文章到此结束,如果本次分享的c++多线程编程和boost多线程编程的问题解决了您的问题,那么我们由衷的感到高兴!

jquery中文?jQuery中文文档dnf格斗家加点 格斗士怎么加点