Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
src_concurrent_qtconcurrenttask.cpp
Go to the documentation of this file.
1
// Copyright (C) 2020 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
4
//! [0]
5
QtConcurrent::task([]{ qDebug(
"Hello, world!"
); }).spawn();
6
//! [0]
7
8
//! [1]
9
auto
task
= [](
const
QString &s){ qDebug() << (
"Hello, "
+ s); };
10
QtConcurrent::task(std::move(task))
11
.withArguments(
"world!"
)
12
.spawn();
13
//! [1]
14
15
//! [2]
16
QString
s
(
"Hello, "
);
17
QtConcurrent::task([](QString &s){ s.append(
"world!"
); })
18
.withArguments(std::ref(s))
19
.spawn();
20
//! [2]
21
22
//! [3]
23
auto
future
= QtConcurrent::task([]{
return
42; }).spawn();
24
auto
result
= future.result();
// result == 42
25
//! [3]
26
27
//! [4]
28
std::is_invocable_v<std::decay_t<Task>, std::decay_t<Args>...>
29
//! [4]
30
31
//! [5]
32
QVariant value(42);
33
auto
result
= QtConcurrent::task([](
const
QVariant &var){
return
qvariant_cast<
int
>(var);})
34
.withArguments(value)
35
.spawn()
36
.result();
// result == 42
37
//! [5]
38
39
//! [6]
40
QString
result
(
"Hello, world!"
);
41
42
QtConcurrent::task(&QString::chop)
43
.withArguments(&result, 8)
44
.spawn()
45
.waitForFinished();
// result == "Hello"
46
//! [6]
47
48
//! [7]
49
auto
result
= QtConcurrent::task(std::plus<
int
>())
50
.withArguments(40, 2)
51
.spawn()
52
.result()
// result == 42
53
//! [7]
54
55
//! [8]
56
struct
CallableWithState
57
{
58
void
operator()(
int
newState) { state = newState; }
59
60
// ...
61
};
62
63
// ...
64
65
CallableWithState
object
;
66
67
QtConcurrent::task(std::ref(object))
68
.withArguments(42)
69
.spawn()
70
.waitForFinished();
// The object's state is set to 42
71
//! [8]
72
73
//! [9]
74
QThreadPool
pool
;
75
QtConcurrent::task([]{
return
42; }).onThreadPool(pool).spawn();
76
//! [9]
77
78
//! [10]
79
QtConcurrent::task([]{
return
42; }).withPriority(10).spawn();
80
//! [10]
81
82
//! [11]
83
QtConcurrent::task([]{ qDebug(
"Hello, world!"
); }).spawn(FutureResult::Ignore);
84
//! [11]
85
86
//! [12]
87
void
increment
(QPromise<
int
> &promise,
int
i)
88
{
89
promise.addResult(i + 1);
90
}
91
92
int
result
= QtConcurrent::task(&increment).withArguments(10).spawn().result();
// result == 11
93
//! [12]
future
QFuture< void > future
[5]
Definition
src_concurrent_qtconcurrentfilter.cpp:22
pool
QThreadPool pool
[8]
Definition
src_concurrent_qtconcurrentrun.cpp:12
result
auto result
[6]
Definition
src_concurrent_qtconcurrenttask.cpp:24
increment
QtConcurrent::task([]{ qDebug("Hello, world!");}).spawn(FutureResult void increment(QPromise< int > &promise, int i)
[10]
Definition
src_concurrent_qtconcurrenttask.cpp:87
object
CallableWithState object
Definition
src_concurrent_qtconcurrenttask.cpp:65
task
auto task
[0]
Definition
src_concurrent_qtconcurrenttask.cpp:9
s
auto s
[6]
Definition
stringbuilder.cpp:32
qtbase
src
concurrent
doc
snippets
code
src_concurrent_qtconcurrenttask.cpp
Generated on
for Qt by
1.18.0