C#List的始建例程

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1   //List<> 的声明与使用
{ 
    class Program
    {       
        static void Main(string[] args)
        {
            //   List<int> mylist = new List<int>();
             var mylist = new List<int>();
            //  var mylist = new List<int> { 1 ,2, 3 };
            mylist.Add(10);   //添加第一个数值
            mylist.Add(20);   //添加第二个数值
            Console.WriteLine(mylist[0]); //访问第一个数值
            Console.ReadKey();

        }
    }
}

manbetx手机网页版,Qt 之 入门例程(2),qt入门例程

  本文以 Qt 中的 QtConcurrent::run()
函数为例,介绍怎么样将函数运营在单独的某二个线程中。

1  QtConcurrent::run()

  QtConcurrent 是四个命名空间,它提供了高档次的接口函数
(APIs),使得编写的先后,可遵照当前Computer中实际上的 CPU
核数,自动调度运转的线程数目。

  上边是 Qt 中的自带例程 runfunction,对应于安装目录为 
D:\Qt\Qt5.8.0\Examples\Qt-5.8\qtconcurrent\runfucntion

壹.壹  .pro 工程文件

  使用 QtConcurrent 模块,需要在 .pro 中添加: QT += concurrent

QT += concurrent widgets
CONFIG += console
CONFIG -= app_bundle

SOURCES += main.cpp

1.2  main.cpp

 1 #include <QApplication>
 2 #include <QDebug>
 3 #include <QThread>
 4 
 5 #include <QString>
 6 #include <QtConcurrent>
 7 
 8 void func(QString name)
 9 {
10     qDebug() << "Hello" << name << "from" << QThread::currentThread();
11 }
12 
13 int main(int argc, char **argv)
14 {
15     QApplication app(argc, argv);
16 
17     QFuture<void> fut1 = QtConcurrent::run(func, QString("Thread 1"));
18     QFuture<void> fut2 = QtConcurrent::run(func, QString("Thread 2"));
19 
20     fut1.waitForFinished();
21     fut2.waitForFinished();
22 }

  能够见到,使用 QtConcurrent::run() 函数,分别将  func()
运营在四个不等的线程之中,输出的结果如下:

Hello "Thread 2" from QThread(0x3597f0, name = "Thread (pooled)")
Hello "Thread 1" from QThread(0x337720, name = "Thread (pooled)")

 

  下边是对应用 QtConcurrent::run() 的详尽演讲,阅读完 贰 和
3,再来看上边的 runfunction 例程,就分外轻易驾驭了。

 二  普通函数

贰.一  将函数运营在某八个线程中

extern void func();
QFuture<void> future = QtConcurrent::run(func);

  假若要为其钦点线程池,能够将线程池的指针作为第贰个参数字传送递进去

extern void func();
QThreadPool pool;
QFuture<void> future = QtConcurrent::run(&pool, func);

二.2  向该函数字传送递参数

  供给传递的参数,必要跟在函数名现在,依次进入

extern void FuncWithArguments(int arg1, const QString &string);

 int integer = ...;
 QString string = ...;

 QFuture<void> future = QtConcurrent::run(FuncWithArguments,integer,string);

贰.三  获取该函数的乘除结果

extern QString Func(const QByteArray &input);

QByteArray byte_array = ...;

QFuture<QString> future = QtConcurrent::run(func, byte_array);
...
QString result = future.result();

三  成员函数

  要将类中的成员函数运转在某四个线程中,可将针对该类实例的 引用或指针
作为 QtConcurrent::run 的率先个参数字传送递进去,

  常量成员函数一般传递 常量引用 (const
reference),而分外量成员函数一般传递 指针 (pointer)

三.一  常量成员函数

   在3个独自的线程中,调用 QByteArray 的常量成员函数 split(),传递给
run() 函数的参数是 bytearray

  QByteArray bytearray = "hello world";
  QFuture<QList<QByteArray> > future = QtConcurrent::run(bytearray, &QByteArray::split, ',');
  ...
  QList<QByteArray> result = future.result();

三.2  至极量成员函数

   在1个独立的线程中,调用 QImage 的非凡量成员函数
invertPixels(),传递给 run() 函数的参数是 &image

  QImage image = ...;
  QFuture<void> future = QtConcurrent::run(&image, &QImage::invertPixels, QImage::InvertRgba);
  ...
  future.waitForFinished();
  // At this point, the pixels in 'image' have been inverted

 

参考资料:

  Qt 助手 | Qt 5.8 | Qt Concurrent | Concurrent Run

 

http://www.bkjia.com/cjjc/1211131.htmlwww.bkjia.comtruehttp://www.bkjia.com/cjjc/1211131.htmlTechArticleQt 之 入门例程(2),qt入门例程 本文以 Qt 中的
QtConcurrent::run() 函数为例,介绍如何将函数运维在单身的某2个线程中。 一QtConcurrent ::run()…

自个儿出现说法了三种创设List的主意,分别是一贯开立,佚名成立,还有成立的时候填上初值。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图