FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
LiteOS.github.io2/kernel/queue.html at master · LiteOS/LiteOS.github.io2 · GitHub
Uh oh!
There was an error while loading.
Please reload this page
.
LiteOS
/
LiteOS.github.io2
Public
Notifications
You must be signed in to change notification settings
Fork
7
Star
6
Code
Issues
1
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
LiteOS.github.io2
/
kernel
/
queue.html
Copy path
More file actions
More file actions
Latest commit
History
History
History
193 lines (174 loc) · 67.7 KB
Breadcrumbs
LiteOS.github.io2
/
kernel
/
queue.html
Copy path
File metadata and controls
193 lines (174 loc) · 67.7 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
<!DOCTYPE html
>
<
html
lang
="
zh-CN
"
>
<
head
>
<
meta
charset
="
utf-8
"
>
<
meta
name
="
viewport
"
content
="
width=device-width,initial-scale=1
"
>
<
title
>
队列 | Huawei LiteOS | 中文网
</
title
>
<
meta
name
="
description
"
content
="
轻量级物联网操作系统,物的智能化使能平台
"
>
<
link
rel
="
icon
"
href
="
/favicon.ico
"
>
<
link
rel
="
preload
"
href
="
/assets/css/0.styles.f1c36acb.css
"
as
="
style
"
>
<
link
rel
="
preload
"
href
="
/assets/js/app.33a5764c.js
"
as
="
script
"
>
<
link
rel
="
preload
"
href
="
/assets/js/55.8e86f10b.js
"
as
="
script
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/2.20e64be0.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/3.c73c47b0.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/4.830424c3.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/5.f9800a44.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/6.6d4fb2db.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/7.e3f71e19.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/8.ed38826a.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/9.13aa0050.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/10.310cbd5c.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/11.1c27b65d.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/12.363ec7ed.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/13.c8ba8d27.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/14.52e6136d.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/15.5bc6a253.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/16.50d29923.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/17.e942ca60.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/18.63f827e2.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/19.561a06ce.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/20.822c89f7.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/21.1b737bb6.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/22.50784b81.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/23.6d3ce5bc.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/24.84d7b76d.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/25.9af98cef.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/26.09b076ce.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/27.14422ca1.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/28.76d0f557.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/29.3de41018.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/30.9d6b307c.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/31.fff19707.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/32.d779c224.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/33.e5eff646.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/34.c29c7bf0.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/35.3d453bad.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/36.d2a3f928.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/37.bab64800.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/38.80b00fd1.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/39.12b69bd3.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/40.8df75237.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/41.68b7a88d.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/42.9d73e1f4.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/43.accc44c7.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/44.f9c729f0.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/45.675d9159.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/46.f14efcb4.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/47.2a4e96c0.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/48.d9ed0168.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/49.3de65caf.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/50.c29ff2f9.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/51.e9ffed00.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/52.0e33188d.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/53.6748ca27.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/54.000288f1.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/56.974a5063.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/57.8addd7b0.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/58.6a7d69e5.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/59.f920c55c.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/60.3e855454.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/61.2c67da1a.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/62.70c63f5c.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/63.f08b7541.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/64.4a6eb56d.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/65.9a9d6083.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/66.b4e5888f.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/67.cf26ea6b.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/68.8c8e5f15.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/69.ca89d6a5.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/70.3156a0a1.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/71.4ce9c97a.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/72.15d9939d.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/73.abd6ee41.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/74.137cf10c.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/75.f4fe6791.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/76.c805d732.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/77.d090efc7.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/78.05b90bf2.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/79.30077ffe.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/80.2e75f2d9.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/81.0155e2da.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/82.9a88acc0.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/83.0c1ca7e6.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/84.a735b6ee.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/85.7d237602.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/86.3cee3381.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/87.dd42373a.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/88.a5346047.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/89.ebd48bf9.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/90.03c0566d.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/91.4ea972ff.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/92.b9a4136c.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/93.0e8aa733.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/94.28883f14.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/95.8fa3c806.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/96.7a7d94af.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/97.482f7a92.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/98.7a77028b.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/99.9b8e08b3.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/100.b147d04f.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/101.cf4e724d.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/102.a31d0525.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/103.0d5bf65f.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/104.b6c77f30.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/105.81dd17e2.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/106.eb6d021a.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/107.849885a5.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/108.3fab7544.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/109.758e1008.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/110.98027808.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/111.faf1c6ce.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/112.4d566467.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/113.459d70fe.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/114.999f3f82.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/115.113c2659.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/116.8bdb9b2a.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/117.fa5ebe43.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/118.6b688361.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/119.51412ca6.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/120.faf7400d.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/121.f122eea3.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/122.8937d7a9.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/123.dfb67b87.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/124.100f9597.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/125.b8855529.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/126.77806c08.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/127.5c8795bd.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/128.a279b147.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/129.31709c6f.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/130.4debfe3e.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/131.c70f2dcc.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/132.ae62365d.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/133.d5aeef62.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/134.435a8b0d.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/135.4453e747.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/136.bff65f24.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/137.b917384e.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/138.269564e3.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/139.fcbad941.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/140.b7f0fb71.js
"
>
<
link
rel
="
prefetch
"
href
="
/assets/js/141.5a641bf8.js
"
>
<link rel="prefetch" href="/assets/js/142.ddfa8646.js"><link rel="prefetch" href="/assets/js/143.90692d4f.js"><link rel="prefetch" href="/assets/js/144.c8deac22.js"><link rel="prefetch" href="/assets/js/145.41f82b8e.js"><link rel="prefetch" href="/assets/js/146.b5cd71e3.js"><link rel="prefetch" href="/assets/js/147.f448da67.js"><link rel="prefetch" href="/assets/js/148.c6c05147.js"><link rel="prefetch" href="/assets/js/149.81667c5c.js"><link rel="prefetch" href="/assets/js/150.a446fa72.js"><link rel="prefetch" href="/assets/js/151.40c60d2e.js"><link rel="prefetch" href="/assets/js/152.34f5ee11.js"><link rel="prefetch" href="/assets/js/153.5f4fa74c.js"><link rel="prefetch" href="/assets/js/154.3f0b71da.js"><link rel="prefetch" href="/assets/js/155.5e3690e2.js"><link rel="prefetch" href="/assets/js/156.77e09f25.js"><link rel="prefetch" href="/assets/js/157.dc328abe.js"><link rel="prefetch" href="/assets/js/158.8ef504f4.js"><link rel="prefetch" href="/assets/js/159.3fdd263e.js"><link rel="prefetch" href="/assets/js/160.37baabe7.js"><link rel="prefetch" href="/assets/js/161.687575c2.js"><link rel="prefetch" href="/assets/js/162.0134b72b.js"><link rel="prefetch" href="/assets/js/vendors~docsearch.32b4aeae.js">
<
link
rel
="
stylesheet
"
href
="
/assets/css/0.styles.f1c36acb.css
"
>
</
head
>
<
body
>
<
div
id
="
app
"
data-server-rendered
="
true
"
>
<
div
class
="
theme-container
"
>
<
header
class
="
navbar
"
>
<
div
class
="
sidebar-button
"
>
<
svg
xmlns
="
http://www.w3.org/2000/svg
"
aria-hidden
="
true
"
role
="
img
"
viewBox
="
0 0 448 512
"
class
="
icon
"
>
<
path
fill
="
currentColor
"
d
="
M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z
"
>
</
path
>
</
svg
>
</
div
>
<
a
href
="
/
"
class
="
home-link router-link-active
"
>
<!---->
<
span
class
="
site-name
"
>
Huawei LiteOS | 中文网
</
span
>
</
a
>
<
div
class
="
links
"
style
="
max-width:nullpx;
"
>
<
div
class
="
search-box
"
>
<
input
aria-label
="
Search
"
autocomplete
="
off
"
spellcheck
="
false
"
value
=""
>
<!---->
</
div
>
<
nav
class
="
nav-links can-hide
"
>
<
div
class
="
nav-item
"
>
<
div
class
="
dropdown-wrapper
"
>
<
a
class
="
dropdown-title
"
>
<
span
class
="
title
"
>
学习
</
span
>
<
span
class
="
arrow right
"
>
</
span
>
</
a
>
<
ul
class
="
nav-dropdown
"
style
="
display:none;
"
>
<
li
class
="
dropdown-item
"
>
<
h4
>
入门
</
h4
>
<
ul
class
="
dropdown-subitem-wrapper
"
>
<
li
class
="
dropdown-subitem
"
>
<
a
href
="
/quick-start/intro/
"
class
="
nav-link
"
>
快速上手
</
a
>
</
li
>
<
li
class
="
dropdown-subitem
"
>
<
a
href
="
/quick-start/contrb/
"
class
="
nav-link
"
>
参与贡献
</
a
>
</
li
>
</
ul
>
</
li
>
<
li
class
="
dropdown-item
"
>
<
h4
>
进阶
</
h4
>
<
ul
class
="
dropdown-subitem-wrapper
"
>
<
li
class
="
dropdown-subitem
"
>
<
a
href
="
/kernel/
"
class
="
nav-link router-link-active
"
>
内核指南
</
a
>
</
li
>
<
li
class
="
dropdown-subitem
"
>
<
a
href
="
/sdk/
"
class
="
nav-link
"
>
SDK 指南
</
a
>
</
li
>
</
ul
>
</
li
>
<
li
class
="
dropdown-item
"
>
<
h4
>
高级
</
h4
>
<
ul
class
="
dropdown-subitem-wrapper
"
>
<
li
class
="
dropdown-subitem
"
>
<
a
href
="
/porting/
"
class
="
nav-link
"
>
移植手册
</
a
>
</
li
>
<
li
class
="
dropdown-subitem
"
>
<
a
href
="
http://liteos.github.io/api-reference/
"
target
="
_blank
"
rel
="
noopener noreferrer
"
class
="
nav-link external
"
>
API 参考
<
svg
xmlns
="
http://www.w3.org/2000/svg
"
aria-hidden
="
true
"
x
="
0px
"
y
="
0px
"
viewBox
="
0 0 100 100
"
width
="
15
"
height
="
15
"
class
="
icon outbound
"
>
<
path
fill
="
currentColor
"
d
="
M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z
"
>
</
path
>
<
polygon
fill
="
currentColor
"
points
="
45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9
"
>
</
polygon
>
</
svg
>
</
a
>
</
li
>
</
ul
>
</
li
>
</
ul
>
</
div
>
</
div
>
<
div
class
="
nav-item
"
>
<
div
class
="
dropdown-wrapper
"
>
<
a
class
="
dropdown-title
"
>
<
span
class
="
title
"
>
实战
</
span
>
<
span
class
="
arrow right
"
>
</
span
>
</
a
>
<
ul
class
="
nav-dropdown
"
style
="
display:none;
"
>
<
li
class
="
dropdown-item
"
>
<
h4
>
LiteOS 动手实验室
</
h4
>
<
ul
class
="
dropdown-subitem-wrapper
"
>
<
li
class
="
dropdown-subitem
"
>
<
a
href
="
/tutorials/kernel/
"
class
="
nav-link
"
>
玩转 LiteOS 内核教程
</
a
>
</
li
>
<
li
class
="
dropdown-subitem
"
>
<
a
href
="
/tutorials/scene/
"
class
="
nav-link
"
>
LiteOS@NB-IoT 场景化样例集
</
a
>
</
li
>
</
ul
>
</
li
>
<
li
class
="
dropdown-item
"
>
<
h4
>
LiteOS 实战训练营材料
</
h4
>
<
ul
class
="
dropdown-subitem-wrapper
"
>
<
li
class
="
dropdown-subitem
"
>
<
a
href
="
/workshop/hangzhou/
"
class
="
nav-link
"
>
Workshop-杭州站
</
a
>
</
li
>
</
ul
>
</
li
>
<
li
class
="
dropdown-item
"
>
<
h4
>
在线精品课程
</
h4
>
<
ul
class
="
dropdown-subitem-wrapper
"
>
<
li
class
="
dropdown-subitem
"
>
<
a
href
="
https://developer.huawei.com/ict/cn/edu-online/site-iot-nb-01
"
target
="
_blank
"
rel
="
noopener noreferrer
"
class
="
nav-link external
"
>
朱老师物联网大讲堂 NB-IoT 系列课程
<
svg
xmlns
="
http://www.w3.org/2000/svg
"
aria-hidden
="
true
"
x
="
0px
"
y
="
0px
"
viewBox
="
0 0 100 100
"
width
="
15
"
height
="
15
"
class
="
icon outbound
"
>
<
path
fill
="
currentColor
"
d
="
M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z
"
>
</
path
>
<
polygon
fill
="
currentColor
"
points
="
45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9
"
>
</
polygon
>
</
svg
>
</
a
>
</
li
>
<
li
class
="
dropdown-subitem
"
>
<
a
href
="
https://developer.huawei.com/ict/cn/edu-online/site-iot-nb-002
"
target
="
_blank
"
rel
="
noopener noreferrer
"
class
="
nav-link external
"
>
物联网俱乐部 NB-IoT 系列课程
<
svg
xmlns
="
http://www.w3.org/2000/svg
"
aria-hidden
="
true
"
x
="
0px
"
y
="
0px
"
viewBox
="
0 0 100 100
"
width
="
15
"
height
="
15
"
class
="
icon outbound
"
>
<
path
fill
="
currentColor
"
d
="
M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z
"
>
</
path
>
<
polygon
fill
="
currentColor
"
points
="
45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9
"
>
</
polygon
>
</
svg
>
</
a
>
</
li
>
</
ul
>
</
li
>
</
ul
>
</
div
>
</
div
>
<
div
class
="
nav-item
"
>
<
a
href
="
https://developer.huawei.com/ict/forum/forum.php?mod=forumdisplay&fid=400045
"
target
="
_blank
"
rel
="
noopener noreferrer
"
class
="
nav-link external
"
>
论坛
<
svg
xmlns
="
http://www.w3.org/2000/svg
"
aria-hidden
="
true
"
x
="
0px
"
y
="
0px
"
viewBox
="
0 0 100 100
"
width
="
15
"
height
="
15
"
class
="
icon outbound
"
>
<
path
fill
="
currentColor
"
d
="
M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z
"
>
</
path
>
<
polygon
fill
="
currentColor
"
points
="
45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9
"
>
</
polygon
>
</
svg
>
</
a
>
</
div
>
<
div
class
="
nav-item
"
>
<
a
href
="
/changelog.html
"
class
="
nav-link
"
>
修订记录
</
a
>
</
div
>
<
div
class
="
nav-item
"
>
<
div
class
="
dropdown-wrapper
"
>
<
a
class
="
dropdown-title
"
>
<
span
class
="
title
"
>
切换语言
</
span
>
<
span
class
="
arrow right
"
>
</
span
>
</
a
>
<
ul
class
="
nav-dropdown
"
style
="
display:none;
"
>
<
li
class
="
dropdown-item
"
>
<!---->
<
a
href
="
/kernel/queue.html
"
class
="
nav-link router-link-exact-active router-link-active
"
>
简体中文
</
a
>
</
li
>
<
li
class
="
dropdown-item
"
>
<!---->
<
a
href
="
/en/kernel/queue.html
"
class
="
nav-link
"
>
English
</
a
>
</
li
>
</
ul
>
</
div
>
</
div
>
<
a
href
="
https://github.com/LiteOS/LiteOS_Documents
"
target
="
_blank
"
rel
="
noopener noreferrer
"
class
="
repo-link
"
>
Github
<
svg
xmlns
="
http://www.w3.org/2000/svg
"
aria-hidden
="
true
"
x
="
0px
"
y
="
0px
"
viewBox
="
0 0 100 100
"
width
="
15
"
height
="
15
"
class
="
icon outbound
"
>
<
path
fill
="
currentColor
"
d
="
M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z
"
>
</
path
>
<
polygon
fill
="
currentColor
"
points
="
45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9
"
>
</
polygon
>
</
svg
>
</
a
>
</
nav
>
</
div
>
</
header
>
<
div
class
="
sidebar-mask
"
>
</
div
>
<
div
class
="
sidebar
"
>
<
nav
class
="
nav-links
"
>
<
div
class
="
nav-item
"
>
<
div
class
="
dropdown-wrapper
"
>
<
a
class
="
dropdown-title
"
>
<
span
class
="
title
"
>
学习
</
span
>
<
span
class
="
arrow right
"
>
</
span
>
</
a
>
<
ul
class
="
nav-dropdown
"
style
="
display:none;
"
>
<
li
class
="
dropdown-item
"
>
<
h4
>
入门
</
h4
>
<
ul
class
="
dropdown-subitem-wrapper
"
>
<
li
class
="
dropdown-subitem
"
>
<
a
href
="
/quick-start/intro/
"
class
="
nav-link
"
>
快速上手
</
a
>
</
li
>
<
li
class
="
dropdown-subitem
"
>
<
a
href
="
/quick-start/contrb/
"
class
="
nav-link
"
>
参与贡献
</
a
>
</
li
>
</
ul
>
</
li
>
<
li
class
="
dropdown-item
"
>
<
h4
>
进阶
</
h4
>
<
ul
class
="
dropdown-subitem-wrapper
"
>
<
li
class
="
dropdown-subitem
"
>
<
a
href
="
/kernel/
"
class
="
nav-link router-link-active
"
>
内核指南
</
a
>
</
li
>
<
li
class
="
dropdown-subitem
"
>
<
a
href
="
/sdk/
"
class
="
nav-link
"
>
SDK 指南
</
a
>
</
li
>
</
ul
>
</
li
>
<
li
class
="
dropdown-item
"
>
<
h4
>
高级
</
h4
>
<
ul
class
="
dropdown-subitem-wrapper
"
>
<
li
class
="
dropdown-subitem
"
>
<
a
href
="
/porting/
"
class
="
nav-link
"
>
移植手册
</
a
>
</
li
>
<
li
class
="
dropdown-subitem
"
>
<
a
href
="
http://liteos.github.io/api-reference/
"
target
="
_blank
"
rel
="
noopener noreferrer
"
class
="
nav-link external
"
>
API 参考
<
svg
xmlns
="
http://www.w3.org/2000/svg
"
aria-hidden
="
true
"
x
="
0px
"
y
="
0px
"
viewBox
="
0 0 100 100
"
width
="
15
"
height
="
15
"
class
="
icon outbound
"
>
<
path
fill
="
currentColor
"
d
="
M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z
"
>
</
path
>
<
polygon
fill
="
currentColor
"
points
="
45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9
"
>
</
polygon
>
</
svg
>
</
a
>
</
li
>
</
ul
>
</
li
>
</
ul
>
</
div
>
</
div
>
<
div
class
="
nav-item
"
>
<
div
class
="
dropdown-wrapper
"
>
<
a
class
="
dropdown-title
"
>
<
span
class
="
title
"
>
实战
</
span
>
<
span
class
="
arrow right
"
>
</
span
>
</
a
>
<
ul
class
="
nav-dropdown
"
style
="
display:none;
"
>
<
li
class
="
dropdown-item
"
>
<
h4
>
LiteOS 动手实验室
</
h4
>
<
ul
class
="
dropdown-subitem-wrapper
"
>
<
li
class
="
dropdown-subitem
"
>
<
a
href
="
/tutorials/kernel/
"
class
="
nav-link
"
>
玩转 LiteOS 内核教程
</
a
>
</
li
>
<
li
class
="
dropdown-subitem
"
>
<
a
href
="
/tutorials/scene/
"
class
="
nav-link
"
>
LiteOS@NB-IoT 场景化样例集
</
a
>
</
li
>
</
ul
>
</
li
>
<
li
class
="
dropdown-item
"
>
<
h4
>
LiteOS 实战训练营材料
</
h4
>
<
ul
class
="
dropdown-subitem-wrapper
"
>
<
li
class
="
dropdown-subitem
"
>
<
a
href
="
/workshop/hangzhou/
"
class
="
nav-link
"
>
Workshop-杭州站
</
a
>
</
li
>
</
ul
>
</
li
>
<
li
class
="
dropdown-item
"
>
<
h4
>
在线精品课程
</
h4
>
<
ul
class
="
dropdown-subitem-wrapper
"
>
<
li
class
="
dropdown-subitem
"
>
<
a
href
="
https://developer.huawei.com/ict/cn/edu-online/site-iot-nb-01
"
target
="
_blank
"
rel
="
noopener noreferrer
"
class
="
nav-link external
"
>
朱老师物联网大讲堂 NB-IoT 系列课程
<
svg
xmlns
="
http://www.w3.org/2000/svg
"
aria-hidden
="
true
"
x
="
0px
"
y
="
0px
"
viewBox
="
0 0 100 100
"
width
="
15
"
height
="
15
"
class
="
icon outbound
"
>
<
path
fill
="
currentColor
"
d
="
M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z
"
>
</
path
>
<
polygon
fill
="
currentColor
"
points
="
45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9
"
>
</
polygon
>
</
svg
>
</
a
>
</
li
>
<
li
class
="
dropdown-subitem
"
>
<
a
href
="
https://developer.huawei.com/ict/cn/edu-online/site-iot-nb-002
"
target
="
_blank
"
rel
="
noopener noreferrer
"
class
="
nav-link external
"
>
物联网俱乐部 NB-IoT 系列课程
<
svg
xmlns
="
http://www.w3.org/2000/svg
"
aria-hidden
="
true
"
x
="
0px
"
y
="
0px
"
viewBox
="
0 0 100 100
"
width
="
15
"
height
="
15
"
class
="
icon outbound
"
>
<
path
fill
="
currentColor
"
d
="
M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z
"
>
</
path
>
<
polygon
fill
="
currentColor
"
points
="
45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9
"
>
</
polygon
>
</
svg
>
</
a
>
</
li
>
</
ul
>
</
li
>
</
ul
>
</
div
>
</
div
>
<
div
class
="
nav-item
"
>
<
a
href
="
https://developer.huawei.com/ict/forum/forum.php?mod=forumdisplay&fid=400045
"
target
="
_blank
"
rel
="
noopener noreferrer
"
class
="
nav-link external
"
>
论坛
<
svg
xmlns
="
http://www.w3.org/2000/svg
"
aria-hidden
="
true
"
x
="
0px
"
y
="
0px
"
viewBox
="
0 0 100 100
"
width
="
15
"
height
="
15
"
class
="
icon outbound
"
>
<
path
fill
="
currentColor
"
d
="
M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z
"
>
</
path
>
<
polygon
fill
="
currentColor
"
points
="
45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9
"
>
</
polygon
>
</
svg
>
</
a
>
</
div
>
<
div
class
="
nav-item
"
>
<
a
href
="
/changelog.html
"
class
="
nav-link
"
>
修订记录
</
a
>
</
div
>
<
div
class
="
nav-item
"
>
<
div
class
="
dropdown-wrapper
"
>
<
a
class
="
dropdown-title
"
>
<
span
class
="
title
"
>
切换语言
</
span
>
<
span
class
="
arrow right
"
>
</
span
>
</
a
>
<
ul
class
="
nav-dropdown
"
style
="
display:none;
"
>
<
li
class
="
dropdown-item
"
>
<!---->
<
a
href
="
/kernel/queue.html
"
class
="
nav-link router-link-exact-active router-link-active
"
>
简体中文
</
a
>
</
li
>
<
li
class
="
dropdown-item
"
>
<!---->
<
a
href
="
/en/kernel/queue.html
"
class
="
nav-link
"
>
English
</
a
>
</
li
>
</
ul
>
</
div
>
</
div
>
<
a
href
="
https://github.com/LiteOS/LiteOS_Documents
"
target
="
_blank
"
rel
="
noopener noreferrer
"
class
="
repo-link
"
>
Github
<
svg
xmlns
="
http://www.w3.org/2000/svg
"
aria-hidden
="
true
"
x
="
0px
"
y
="
0px
"
viewBox
="
0 0 100 100
"
width
="
15
"
height
="
15
"
class
="
icon outbound
"
>
<
path
fill
="
currentColor
"
d
="
M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z
"
>
</
path
>
<
polygon
fill
="
currentColor
"
points
="
45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9
"
>
</
polygon
>
</
svg
>
</
a
>
</
nav
>
<
ul
class
="
sidebar-links
"
>
<
li
>
<
div
class
="
sidebar-group first
"
>
<
p
class
="
sidebar-heading
"
>
<
span
>
内核
</
span
>
<!---->
</
p
>
<
ul
class
="
sidebar-group-items
"
>
<
li
>
<
a
href
="
/kernel/
"
class
="
sidebar-link
"
>
介绍
</
a
>
</
li
>
</
ul
>
</
div
>
</
li
>
<
li
>
<
div
class
="
sidebar-group
"
>
<
p
class
="
sidebar-heading open
"
>
<
span
>
基础功能
</
span
>
<!---->
</
p
>
<
ul
class
="
sidebar-group-items
"
>
<
li
>
<
a
href
="
/kernel/task.html
"
class
="
sidebar-link
"
>
任务
</
a
>
</
li
>
<
li
>
<
a
href
="
/kernel/memory.html
"
class
="
sidebar-link
"
>
内存
</
a
>
</
li
>
<
li
>
<
a
href
="
/kernel/interrupt.html
"
class
="
sidebar-link
"
>
中断
</
a
>
</
li
>
<
li
>
<
a
href
="
/kernel/queue.html
"
class
="
active sidebar-link
"
>
队列
</
a
>
<
ul
class
="
sidebar-sub-headers
"
>
<
li
class
="
sidebar-sub-header
"
>
<
a
href
="
/kernel/queue.html#概述
"
class
="
sidebar-link
"
>
概述
</
a
>
</
li
>
<
li
class
="
sidebar-sub-header
"
>
<
a
href
="
/kernel/queue.html#开发指导
"
class
="
sidebar-link
"
>
开发指导
</
a
>
</
li
>
<
li
class
="
sidebar-sub-header
"
>
<
a
href
="
/kernel/queue.html#注意事项
"
class
="
sidebar-link
"
>
注意事项
</
a
>
</
li
>
<
li
class
="
sidebar-sub-header
"
>
<
a
href
="
/kernel/queue.html#编程实例
"
class
="
sidebar-link
"
>
编程实例
</
a
>
</
li
>
</
ul
>
</
li
>
<
li
>
<
a
href
="
/kernel/event.html
"
class
="
sidebar-link
"
>
事件
</
a
>
</
li
>
<
li
>
<
a
href
="
/kernel/mutex.html
"
class
="
sidebar-link
"
>
互斥锁
</
a
>
</
li
>
<
li
>
<
a
href
="
/kernel/semaphore.html
"
class
="
sidebar-link
"
>
信号量
</
a
>
</
li
>
<
li
>
<
a
href
="
/kernel/time-magmt.html
"
class
="
sidebar-link
"
>
时间管理
</
a
>
</
li
>
<
li
>
<
a
href
="
/kernel/swtmr.html
"
class
="
sidebar-link
"
>
软件定时器
</
a
>
</
li
>
<
li
>
<
a
href
="
/kernel/list.html
"
class
="
sidebar-link
"
>
双向链表
</
a
>
</
li
>
</
ul
>
</
div
>
</
li
>
<
li
>
<
div
class
="
sidebar-group
"
>
<
p
class
="
sidebar-heading
"
>
<
span
>
错误码参考
</
span
>
<!---->
</
p
>
<
ul
class
="
sidebar-group-items
"
>
<
li
>
<
a
href
="
/kernel/errorcode-task.html
"
class
="
sidebar-link
"
>
任务错误码
</
a
>
</
li
>
<
li
>
<
a
href
="
/kernel/errorcode-queue.html
"
class
="
sidebar-link
"
>
队列错误码
</
a
>
</
li
>
<
li
>
<
a
href
="
/kernel/errorcode-event.html
"
class
="
sidebar-link
"
>
事件错误码
</
a
>
</
li
>
<
li
>
<
a
href
="
/kernel/errorcode-mutex.html
"
class
="
sidebar-link
"
>
互斥锁错误码
</
a
>
</
li
>
<
li
>
<
a
href
="
/kernel/errorcode-semaphore.html
"
class
="
sidebar-link
"
>
信号量错误码
</
a
>
</
li
>
<
li
>
<
a
href
="
/kernel/errorcode-swtmr.html
"
class
="
sidebar-link
"
>
软件定时器错误码
</
a
>
</
li
>
</
ul
>
</
div
>
</
li
>
</
ul
>
</
div
>
<
div
class
="
page
"
>
<
div
class
="
content
"
>
<
h1
id
="
队列
"
>
<
a
href
="
#队列
"
aria-hidden
="
true
"
class
="
header-anchor
"
>
#
</
a
>
队列
</
h1
>
<
p
>
</
p
>
<
div
class
="
table-of-contents
"
>
<
ul
>
<
li
>
<
a
href
="
#概述
"
>
概述
</
a
>
<
ul
>
<
li
>
<
a
href
="
#基本概念
"
>
基本概念
</
a
>
</
li
>
<
li
>
<
a
href
="
#运作机制
"
>
运作机制
</
a
>
</
li
>
<
li
>
<
a
href
="
#队列运作原理
"
>
队列运作原理
</
a
>
</
li
>
</
ul
>
</
li
>
<
li
>
<
a
href
="
#开发指导
"
>
开发指导
</
a
>
<
ul
>
<
li
>
<
a
href
="
#功能
"
>
功能
</
a
>
</
li
>
<
li
>
<
a
href
="
#开发流程-使用队列模块的典型流程如下:
"
>
开发流程 使用队列模块的典型流程如下:
</
a
>
</
li
>
</
ul
>
</
li
>
<
li
>
<
a
href
="
#注意事项
"
>
注意事项
</
a
>
</
li
>
<
li
>
<
a
href
="
#编程实例
"
>
编程实例
</
a
>
<
ul
>
<
li
>
<
a
href
="
#实例描述
"
>
实例描述
</
a
>
</
li
>
<
li
>
<
a
href
="
#编程示例
"
>
编程示例
</
a
>
</
li
>
<
li
>
<
a
href
="
#结果验证
"
>
结果验证
</
a
>
</
li
>
</
ul
>
</
li
>
</
ul
>
</
div
>
<
p
>
</
p
>
<
h2
id
="
概述
"
>
<
a
href
="
#概述
"
aria-hidden
="
true
"
class
="
header-anchor
"
>
#
</
a
>
概述
</
h2
>
<
h3
id
="
基本概念
"
>
<
a
href
="
#基本概念
"
aria-hidden
="
true
"
class
="
header-anchor
"
>
#
</
a
>
基本概念
</
h3
>
<
p
>
队列又称消息队列,是一种常用于任务间通信的数据结构,实现了接收来自任务或中断的不固定长度的消息,并根据不同的接口选择传递消息是否存放在自己空间。任务能够从队列里面读取消息,当队列中的消息是空时,挂起读取任务;当队列中有新消息时,挂起的读取任务被唤醒并处理新消息。
</
p
>
<
p
>
用户在处理业务时,消息队列提供了异步处理机制,允许将一个消息放入队列,但并不立即处理它,同时队列还能起到缓冲消息作用。
</
p
>
<
p
>
Huawei LiteOS中使用队列数据结构实现任务异步通信工作,具有如下特性:
</
p
>
<
ul
>
<
li
>
<
p
>
消息以先进先出方式排队,支持异步读写工作方式。
</
p
>
</
li
>
<
li
>
<
p
>
读队列和写队列都支持超时机制。
</
p
>
</
li
>
<
li
>
<
p
>
发送消息类型由通信双方约定,可以允许不同长度(不超过队列节点最大值)消息。
</
p
>
</
li
>
<
li
>
<
p
>
一个任务能够从任意一个消息队列接收和发送消息。
</
p
>
</
li
>
<
li
>
<
p
>
多个任务能够从同一个消息队列接收和发送消息。
</
p
>
</
li
>
<
li
>
<
p
>
当队列使用结束后,如果是动态申请的内存,需要通过释放内存函数回收。
</
p
>
</
li
>
</
ul
>
<
h3
id
="
运作机制
"
>
<
a
href
="
#运作机制
"
aria-hidden
="
true
"
class
="
header-anchor
"
>
#
</
a
>
运作机制
</
h3
>
<
h4
id
="
队列控制块
"
>
<
a
href
="
#队列控制块
"
aria-hidden
="
true
"
class
="
header-anchor
"
>
#
</
a
>
队列控制块
</
h4
>
<
div
class
="
language-c extra-class
"
>
<
pre
class
="
language-c
"
>
<
code
>
<
span
class
="
token keyword
"
>
typedef
</
span
>
<
span
class
="
token keyword
"
>
struct
</
span
>
tagQueueCB
<
span
class
="
token punctuation
"
>
{
</
span
>
UINT8
<
span
class
="
token operator
"
>
*
</
span
>
pucQueue
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token comment
"
>
/**< 队列指针 */
</
span
>
UINT16 usQueueState
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token comment
"
>
/**< 队列状态 */
</
span
>
UINT16 usQueueLen
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token comment
"
>
/**< 队列中消息个数 */
</
span
>
UINT16 usQueueSize
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token comment
"
>
/**< 消息节点大小 */
</
span
>
UNIT16 usQueueID
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token comment
"
>
/**< 队列ID号 */
</
span
>
UINT16 usQueueHead
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token comment
"
>
/**< 消息头节点位置(数组下标)*/
</
span
>
UINT16 usQueueTail
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token comment
"
>
/**< 消息尾节点位置(数组下标)*/
</
span
>
UINT16 usReadWritableCnt
<
span
class
="
token punctuation
"
>
[
</
span
>
<
span
class
="
token number
"
>
2
</
span
>
<
span
class
="
token punctuation
"
>
]
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token comment
"
>
/**< 队列中可写或可读消息数,0表示可读,1表示可写*/
</
span
>
LOS_DL_LIST stReadWriteableList
<
span
class
="
token punctuation
"
>
[
</
span
>
<
span
class
="
token number
"
>
2
</
span
>
<
span
class
="
token punctuation
"
>
]
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token comment
"
>
/**< 读写阻塞队列,0表示读阻塞队列,1表示写阻塞队列*/
</
span
>
LOS_DL_LIST stMemList
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token comment
"
>
/**< MailBox模块使用 */
</
span
>
<
span
class
="
token punctuation
"
>
}
</
span
>
QUEUE_CB_S
<
span
class
="
token punctuation
"
>
;
</
span
>
</
code
>
</
pre
>
</
div
>
<
p
>
每个队列控制块中都含有队列状态,表示该队列的使用情况:
</
p
>
<
ul
>
<
li
>
<
p
>
<
code
>
OS_QUEUE_UNUSED
</
code
>
:队列没有使用
</
p
>
</
li
>
<
li
>
<
p
>
<
code
>
OS_QUEUE_INUSED
</
code
>
:队列被使用
</
p
>
</
li
>
</
ul
>
<
h3
id
="
队列运作原理
"
>
<
a
href
="
#队列运作原理
"
aria-hidden
="
true
"
class
="
header-anchor
"
>
#
</
a
>
队列运作原理
</
h3
>
<
p
>
创建队列时,根据用户传入队列长度和消息节点大小来开辟相应的内存空间以供该队列使用,返回队列 ID。
</
p
>
<
p
>
在队列控制块中维护一个消息头节点位置 Head 和一个消息尾节点位置 Tail 来表示当前队列中消息存储情况。Head 表示队列中被占用消息的起始位置。 Tail 表示队列中被空闲消息的起始位置。刚创建时 Head 和 Tail 均指向队列起始位置。
</
p
>
<
p
>
写队列时,根据 Tail 找到被占用消息节点末尾的空闲节点作为数据写入对象。如果 Tail 已经指向队列尾则采用回卷方式。根据 usWritableCnt 判断队列是否可以写入,不能对已满(usWritableCnt为0)队列进行写队列操作。
</
p
>
<
p
>
读队列时,根据Head找到最先写入队列中的消息节点进行读取。如果Head已经指向队列尾则采用回卷方式。根据usReadableCnt判断队列是否有消息读取,对全部空闲(usReadableCnt为0)队列进行读队列操作会引起任务挂起。
</
p
>
<
p
>
删除队列时,根据传入的队列 ID 寻找到对应的队列,把队列状态置为未使用,释放原队列所占的空间,对应的队列控制头置为初始状态。
</
p
>
<
p
>
队列读写数据操作示意图
<
br
>
<
img
src
="
data:image/png;base64,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
"
alt
>
</
p
>
<
h2
id
="
开发指导
"
>
<
a
href
="
#开发指导
"
aria-hidden
="
true
"
class
="
header-anchor
"
>
#
</
a
>
开发指导
</
h2
>
<
h3
id
="
功能
"
>
<
a
href
="
#功能
"
aria-hidden
="
true
"
class
="
header-anchor
"
>
#
</
a
>
功能
</
h3
>
<
p
>
Huawei LiteOS中Message消息处理模块提供了以下功能。
</
p
>
<
table
>
<
thead
>
<
tr
>
<
th
>
功能分类
</
th
>
<
th
>
接口名
</
th
>
<
th
>
描述
</
th
>
</
tr
>
</
thead
>
<
tbody
>
<
tr
>
<
td
>
创建消息队列
</
td
>
<
td
>
<
code
>
LOS_QueueCreate
</
code
>
</
td
>
<
td
>
创建一个消息队列
</
td
>
</
tr
>
<
tr
>
<
td
>
读队列(不带拷贝)
</
td
>
<
td
>
<
code
>
LOS_QueueRead
</
code
>
</
td
>
<
td
>
读取指定队列中的数据。(buff里存放的是队列节点的地址)
</
td
>
</
tr
>
<
tr
>
<
td
>
写队列(不带拷贝)
</
td
>
<
td
>
<
code
>
LOS_QueueWrite
</
code
>
</
td
>
<
td
>
向指定队列写数据。(写入队列节点中的是buff的地址)
</
td
>
</
tr
>
<
tr
>
<
td
>
读队列(带拷贝)
</
td
>
<
td
>
<
code
>
LOS_QueueReadCopy
</
code
>
</
td
>
<
td
>
读取指定队列中的数据。(buff里存放的是队列节点中的数据)
</
td
>
</
tr
>
<
tr
>
<
td
>
写队列(带拷贝)
</
td
>
<
td
>
<
code
>
LOS_QueueWriteCopy
</
code
>
</
td
>
<
td
>
向指定队列写数据。(写入队列节点中的是buff中的数据)
</
td
>
</
tr
>
<
tr
>
<
td
>
写队列(头部)
</
td
>
<
td
>
<
code
>
LOS_QueueWriteHead
</
code
>
</
td
>
<
td
>
向指定队列的头部写数据
</
td
>
</
tr
>
<
tr
>
<
td
>
删除队列
</
td
>
<
td
>
<
code
>
LOS_QueueDelete
</
code
>
</
td
>
<
td
>
删除一个指定的队列
</
td
>
</
tr
>
<
tr
>
<
td
>
获取队列信息
</
td
>
<
td
>
<
code
>
LOS_QueueInfoGet
</
code
>
</
td
>
<
td
>
获取指定队列信息
</
td
>
</
tr
>
</
tbody
>
</
table
>
<
h3
id
="
开发流程-使用队列模块的典型流程如下:
"
>
<
a
href
="
#开发流程-使用队列模块的典型流程如下:
"
aria-hidden
="
true
"
class
="
header-anchor
"
>
#
</
a
>
开发流程 使用队列模块的典型流程如下:
</
h3
>
<
ol
>
<
li
>
<
p
>
创建消息队列
<
code
>
LOS_QueueCreate
</
code
>
。
</
p
>
<
p
>
创建成功后,可以得到消息队列的 ID 值。
</
p
>
</
li
>
<
li
>
<
p
>
写队列操作函数
<
code
>
LOS_QueueWrite
</
code
>
。
</
p
>
</
li
>
<
li
>
<
p
>
读队列操作函数
<
code
>
LOS_QueueRead
</
code
>
。
</
p
>
</
li
>
<
li
>
<
p
>
获取队列信息函数
<
code
>
LOS_QueueInfoGet
</
code
>
。
</
p
>
</
li
>
<
li
>
<
p
>
删除队列
<
code
>
LOS_QueueDelete
</
code
>
。
</
p
>
</
li
>
</
ol
>
<
h2
id
="
注意事项
"
>
<
a
href
="
#注意事项
"
aria-hidden
="
true
"
class
="
header-anchor
"
>
#
</
a
>
注意事项
</
h2
>
<
ul
>
<
li
>
<
p
>
系统可配置的队列资源个数是指:整个系统的队列资源总个数,而非用户能使用的个数。例如:系统软件定时器多占用一个队列资源,那么系统可配置的队列资源就会减少一个。
</
p
>
</
li
>
<
li
>
<
p
>
调用
<
code
>
LOS_QueueCreate
</
code
>
函数时所传入的队列名暂时未使用,作为以后的预留参数。
</
p
>
</
li
>
<
li
>
<
p
>
队列接口函数中的入参 uwTimeOut 是指相对时间。
</
p
>
</
li
>
<
li
>
<
p
>
<
code
>
LOS_QueueReadCopy
</
code
>
和
<
code
>
LOS_QueueWriteCopy
</
code
>
是一组接口,
<
code
>
LOS_QueueRead
</
code
>
和
<
code
>
LOS_QueueWrite
</
code
>
是一组接口,两组接口需要配套使用。
</
p
>
</
li
>
<
li
>
<
p
>
鉴于
<
code
>
LOS_QueueWrite
</
code
>
和
<
code
>
LOS_QueueRead
</
code
>
这组接口实际操作的是数据地址,用户必须保证调用
<
code
>
LOS_QueueRead
</
code
>
获取到的指针所指向内存区域在读队列期间没有被异常修改或释放,否则可能会导致不可预知的后果。
</
p
>
</
li
>
</
ul
>
<
h2
id
="
编程实例
"
>
<
a
href
="
#编程实例
"
aria-hidden
="
true
"
class
="
header-anchor
"
>
#
</
a
>
编程实例
</
h2
>
<
h3
id
="
实例描述
"
>
<
a
href
="
#实例描述
"
aria-hidden
="
true
"
class
="
header-anchor
"
>
#
</
a
>
实例描述
</
h3
>
<
p
>
创建一个队列,两个任务。任务1调用发送接口发送消息;任务2通过接收接口接收消息。
</
p
>
<
ol
>
<
li
>
<
p
>
通过
<
code
>
LOS_TaskCreate
</
code
>
创建任务1和任务2。
</
p
>
</
li
>
<
li
>
<
p
>
通过
<
code
>
LOS_QueueCreate
</
code
>
创建一个消息队列。
</
p
>
</
li
>
<
li
>
<
p
>
在任务1
<
code
>
send_Entry
</
code
>
中发送消息。
</
p
>
</
li
>
<
li
>
<
p
>
在任务2
<
code
>
recv_Entry
</
code
>
中接收消息。
</
p
>
</
li
>
<
li
>
<
p
>
通过
<
code
>
LOS_QueueDelete
</
code
>
删除队列。
</
p
>
</
li
>
</
ol
>
<
h3
id
="
编程示例
"
>
<
a
href
="
#编程示例
"
aria-hidden
="
true
"
class
="
header-anchor
"
>
#
</
a
>
编程示例
</
h3
>
<
div
class
="
language-c extra-class
"
>
<
pre
class
="
language-c
"
>
<
code
>
<
span
class
="
token macro property
"
>
#
<
span
class
="
token directive keyword
"
>
include
</
span
>
<
span
class
="
token string
"
>
"los_base.h"
</
span
>
</
span
>
<
span
class
="
token macro property
"
>
#
<
span
class
="
token directive keyword
"
>
include
</
span
>
<
span
class
="
token string
"
>
"los_task.h"
</
span
>
</
span
>
<
span
class
="
token macro property
"
>
#
<
span
class
="
token directive keyword
"
>
include
</
span
>
<
span
class
="
token string
"
>
"los_swtmr.h"
</
span
>
</
span
>
<
span
class
="
token macro property
"
>
#
<
span
class
="
token directive keyword
"
>
include
</
span
>
<
span
class
="
token string
"
>
"los_hwi.h"
</
span
>
</
span
>
<
span
class
="
token macro property
"
>
#
<
span
class
="
token directive keyword
"
>
include
</
span
>
<
span
class
="
token string
"
>
"los_queue.h"
</
span
>
</
span
>
<
span
class
="
token macro property
"
>
#
<
span
class
="
token directive keyword
"
>
include
</
span
>
<
span
class
="
token string
"
>
"los_event.h"
</
span
>
</
span
>
<
span
class
="
token macro property
"
>
#
<
span
class
="
token directive keyword
"
>
include
</
span
>
<
span
class
="
token string
"
>
"los_typedef.h"
</
span
>
</
span
>
<
span
class
="
token macro property
"
>
#
<
span
class
="
token directive keyword
"
>
include
</
span
>
<
span
class
="
token string
"
>
"los_api_msgqueue.h"
</
span
>
</
span
>
<
span
class
="
token macro property
"
>
#
<
span
class
="
token directive keyword
"
>
include
</
span
>
<
span
class
="
token string
"
>
"los_inspect_entry.h"
</
span
>
</
span
>
<
span
class
="
token keyword
"
>
static
</
span
>
UINT32 g_uwQueue
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token keyword
"
>
static
</
span
>
CHAR abuf
<
span
class
="
token punctuation
"
>
[
</
span
>
<
span
class
="
token punctuation
"
>
]
</
span
>
<
span
class
="
token operator
"
>
=
</
span
>
<
span
class
="
token string
"
>
"test is message x"
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token comment
"
>
/*任务1发送数据*/
</
span
>
<
span
class
="
token keyword
"
>
static
</
span
>
<
span
class
="
token keyword
"
>
void
</
span
>
<
span
class
="
token operator
"
>
*
</
span
>
<
span
class
="
token function
"
>
send_Entry
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
UINT32 uwParam1
<
span
class
="
token punctuation
"
>
,
</
span
>
UINT32 uwParam2
<
span
class
="
token punctuation
"
>
,
</
span
>
UINT32 uwParam3
<
span
class
="
token punctuation
"
>
,
</
span
>
UINT32 uwParam4
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
{
</
span
>
UINT32 i
<
span
class
="
token operator
"
>
=
</
span
>
<
span
class
="
token number
"
>
0
</
span
>
<
span
class
="
token punctuation
"
>
,
</
span
>
uwRet
<
span
class
="
token operator
"
>
=
</
span
>
<
span
class
="
token number
"
>
0
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
UINT32 uwlen
<
span
class
="
token operator
"
>
=
</
span
>
<
span
class
="
token keyword
"
>
sizeof
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
abuf
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token keyword
"
>
while
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
i
<
span
class
="
token operator
"
>
<
</
span
>
API_MSG_NUM
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
{
</
span
>
abuf
<
span
class
="
token punctuation
"
>
[
</
span
>
uwlen
<
span
class
="
token operator
"
>
-
</
span
>
<
span
class
="
token number
"
>
2
</
span
>
<
span
class
="
token punctuation
"
>
]
</
span
>
<
span
class
="
token operator
"
>
=
</
span
>
<
span
class
="
token string
"
>
'0'
</
span
>
<
span
class
="
token operator
"
>
+
</
span
>
i
<
span
class
="
token punctuation
"
>
;
</
span
>
i
<
span
class
="
token operator
"
>
++
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token comment
"
>
/*将abuf里的数据写入队列*/
</
span
>
uwRet
<
span
class
="
token operator
"
>
=
</
span
>
<
span
class
="
token function
"
>
LOS_QueueWrite
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
g_uwQueue
<
span
class
="
token punctuation
"
>
,
</
span
>
abuf
<
span
class
="
token punctuation
"
>
,
</
span
>
uwlen
<
span
class
="
token punctuation
"
>
,
</
span
>
<
span
class
="
token number
"
>
0
</
span
>
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token keyword
"
>
if
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
uwRet
<
span
class
="
token operator
"
>
!=
</
span
>
LOS_OK
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
{
</
span
>
<
span
class
="
token function
"
>
dprintf
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
<
span
class
="
token string
"
>
"send message failure,error:%x\n"
</
span
>
<
span
class
="
token punctuation
"
>
,
</
span
>
uwRet
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token punctuation
"
>
}
</
span
>
<
span
class
="
token function
"
>
LOS_TaskDelay
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
<
span
class
="
token number
"
>
5
</
span
>
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token punctuation
"
>
}
</
span
>
<
span
class
="
token keyword
"
>
return
</
span
>
<
span
class
="
token constant
"
>
NULL
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token punctuation
"
>
}
</
span
>
<
span
class
="
token comment
"
>
/*任务2接收数据*/
</
span
>
<
span
class
="
token keyword
"
>
static
</
span
>
<
span
class
="
token keyword
"
>
void
</
span
>
<
span
class
="
token operator
"
>
*
</
span
>
<
span
class
="
token function
"
>
recv_Entry
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
UINT32 uwParam1
<
span
class
="
token punctuation
"
>
,
</
span
>
UINT32 uwParam2
<
span
class
="
token punctuation
"
>
,
</
span
>
UINT32 uwParam3
<
span
class
="
token punctuation
"
>
,
</
span
>
UINT32 uwParam4
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
{
</
span
>
UINT32 uwReadbuf
<
span
class
="
token punctuation
"
>
;
</
span
>
UINT32 uwRet
<
span
class
="
token operator
"
>
=
</
span
>
LOS_OK
<
span
class
="
token punctuation
"
>
;
</
span
>
UINT32 uwMsgCount
<
span
class
="
token operator
"
>
=
</
span
>
<
span
class
="
token number
"
>
0
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token keyword
"
>
while
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
<
span
class
="
token number
"
>
1
</
span
>
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
{
</
span
>
<
span
class
="
token comment
"
>
/*读取队列里的数据存入uwReadbuf里*/
</
span
>
uwRet
<
span
class
="
token operator
"
>
=
</
span
>
<
span
class
="
token function
"
>
LOS_QueueRead
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
g_uwQueue
<
span
class
="
token punctuation
"
>
,
</
span
>
<
span
class
="
token operator
"
>
&
</
span
>
uwReadbuf
<
span
class
="
token punctuation
"
>
,
</
span
>
<
span
class
="
token number
"
>
24
</
span
>
<
span
class
="
token punctuation
"
>
,
</
span
>
<
span
class
="
token number
"
>
0
</
span
>
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token keyword
"
>
if
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
uwRet
<
span
class
="
token operator
"
>
!=
</
span
>
LOS_OK
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
{
</
span
>
<
span
class
="
token function
"
>
dprintf
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
<
span
class
="
token string
"
>
"recv message failure,error:%x\n"
</
span
>
<
span
class
="
token punctuation
"
>
,
</
span
>
uwRet
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token keyword
"
>
break
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token punctuation
"
>
}
</
span
>
<
span
class
="
token keyword
"
>
else
</
span
>
<
span
class
="
token punctuation
"
>
{
</
span
>
<
span
class
="
token function
"
>
dprintf
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
<
span
class
="
token string
"
>
"recv message:%s\n"
</
span
>
<
span
class
="
token punctuation
"
>
,
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
<
span
class
="
token keyword
"
>
char
</
span
>
<
span
class
="
token operator
"
>
*
</
span
>
<
span
class
="
token punctuation
"
>
)
</
span
>
uwReadbuf
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
uwMsgCount
<
span
class
="
token operator
"
>
++
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token punctuation
"
>
}
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
<
span
class
="
token keyword
"
>
void
</
span
>
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token function
"
>
LOS_TaskDelay
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
<
span
class
="
token number
"
>
5
</
span
>
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token punctuation
"
>
}
</
span
>
<
span
class
="
token comment
"
>
/*删除队列*/
</
span
>
<
span
class
="
token keyword
"
>
while
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
LOS_OK
<
span
class
="
token operator
"
>
!=
</
span
>
<
span
class
="
token function
"
>
LOS_QueueDelete
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
g_uwQueue
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
{
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
<
span
class
="
token keyword
"
>
void
</
span
>
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token function
"
>
LOS_TaskDelay
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
<
span
class
="
token number
"
>
1
</
span
>
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token punctuation
"
>
}
</
span
>
<
span
class
="
token function
"
>
dprintf
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
<
span
class
="
token string
"
>
"delete the queue success!\n"
</
span
>
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token keyword
"
>
if
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
API_MSG_NUM
<
span
class
="
token operator
"
>
==
</
span
>
uwMsgCount
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
{
</
span
>
uwRet
<
span
class
="
token operator
"
>
=
</
span
>
<
span
class
="
token function
"
>
LOS_InspectStatusSetByID
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
LOS_INSPECT_MSG
<
span
class
="
token punctuation
"
>
,
</
span
>
LOS_INSPECT_STU_SUCCESS
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token keyword
"
>
if
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
LOS_OK
<
span
class
="
token operator
"
>
!=
</
span
>
uwRet
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
{
</
span
>
<
span
class
="
token function
"
>
dprintf
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
<
span
class
="
token string
"
>
"Set Inspect Status Err\n"
</
span
>
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token punctuation
"
>
}
</
span
>
<
span
class
="
token punctuation
"
>
}
</
span
>
<
span
class
="
token keyword
"
>
else
</
span
>
<
span
class
="
token punctuation
"
>
{
</
span
>
uwRet
<
span
class
="
token operator
"
>
=
</
span
>
<
span
class
="
token function
"
>
LOS_InspectStatusSetByID
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
LOS_INSPECT_MSG
<
span
class
="
token punctuation
"
>
,
</
span
>
LOS_INSPECT_STU_ERROR
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token keyword
"
>
if
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
LOS_OK
<
span
class
="
token operator
"
>
!=
</
span
>
uwRet
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
{
</
span
>
<
span
class
="
token function
"
>
dprintf
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
<
span
class
="
token string
"
>
"Set Inspect Status Err\n"
</
span
>
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token punctuation
"
>
}
</
span
>
<
span
class
="
token punctuation
"
>
}
</
span
>
<
span
class
="
token keyword
"
>
return
</
span
>
<
span
class
="
token constant
"
>
NULL
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token punctuation
"
>
}
</
span
>
UINT32
<
span
class
="
token function
"
>
Example_MsgQueue
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
<
span
class
="
token keyword
"
>
void
</
span
>
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
{
</
span
>
UINT32 uwRet
<
span
class
="
token operator
"
>
=
</
span
>
<
span
class
="
token number
"
>
0
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
UINT32 uwTask1
<
span
class
="
token punctuation
"
>
,
</
span
>
uwTask2
<
span
class
="
token punctuation
"
>
;
</
span
>
TSK_INIT_PARAM_S stInitParam1
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token comment
"
>
/*创建任务1*/
</
span
>
stInitParam1
<
span
class
="
token punctuation
"
>
.
</
span
>
pfnTaskEntry
<
span
class
="
token operator
"
>
=
</
span
>
send_Entry
<
span
class
="
token punctuation
"
>
;
</
span
>
stInitParam1
<
span
class
="
token punctuation
"
>
.
</
span
>
usTaskPrio
<
span
class
="
token operator
"
>
=
</
span
>
<
span
class
="
token number
"
>
9
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
stInitParam1
<
span
class
="
token punctuation
"
>
.
</
span
>
uwStackSize
<
span
class
="
token operator
"
>
=
</
span
>
LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE
<
span
class
="
token punctuation
"
>
;
</
span
>
stInitParam1
<
span
class
="
token punctuation
"
>
.
</
span
>
pcName
<
span
class
="
token operator
"
>
=
</
span
>
<
span
class
="
token string
"
>
"sendQueue"
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token function
"
>
LOS_TaskLock
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token comment
"
>
//锁住任务,防止新创建的任务比本任务高而发生调度
</
span
>
uwRet
<
span
class
="
token operator
"
>
=
</
span
>
<
span
class
="
token function
"
>
LOS_TaskCreate
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
<
span
class
="
token operator
"
>
&
</
span
>
uwTask1
<
span
class
="
token punctuation
"
>
,
</
span
>
<
span
class
="
token operator
"
>
&
</
span
>
stInitParam1
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token keyword
"
>
if
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
uwRet
<
span
class
="
token operator
"
>
!=
</
span
>
LOS_OK
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
{
</
span
>
<
span
class
="
token function
"
>
dprintf
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
<
span
class
="
token string
"
>
"create task1 failed!,error:%x\n"
</
span
>
<
span
class
="
token punctuation
"
>
,
</
span
>
uwRet
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token keyword
"
>
return
</
span
>
uwRet
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token punctuation
"
>
}
</
span
>
<
span
class
="
token comment
"
>
/*创建任务2*/
</
span
>
stInitParam1
<
span
class
="
token punctuation
"
>
.
</
span
>
pfnTaskEntry
<
span
class
="
token operator
"
>
=
</
span
>
recv_Entry
<
span
class
="
token punctuation
"
>
;
</
span
>
uwRet
<
span
class
="
token operator
"
>
=
</
span
>
<
span
class
="
token function
"
>
LOS_TaskCreate
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
<
span
class
="
token operator
"
>
&
</
span
>
uwTask2
<
span
class
="
token punctuation
"
>
,
</
span
>
<
span
class
="
token operator
"
>
&
</
span
>
stInitParam1
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token keyword
"
>
if
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
uwRet
<
span
class
="
token operator
"
>
!=
</
span
>
LOS_OK
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
{
</
span
>
<
span
class
="
token function
"
>
dprintf
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
<
span
class
="
token string
"
>
"create task2 failed!,error:%x\n"
</
span
>
<
span
class
="
token punctuation
"
>
,
</
span
>
uwRet
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token keyword
"
>
return
</
span
>
uwRet
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token punctuation
"
>
}
</
span
>
<
span
class
="
token comment
"
>
/*创建队列*/
</
span
>
uwRet
<
span
class
="
token operator
"
>
=
</
span
>
<
span
class
="
token function
"
>
LOS_QueueCreate
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
<
span
class
="
token string
"
>
"queue"
</
span
>
<
span
class
="
token punctuation
"
>
,
</
span
>
<
span
class
="
token number
"
>
5
</
span
>
<
span
class
="
token punctuation
"
>
,
</
span
>
<
span
class
="
token operator
"
>
&
</
span
>
g_uwQueue
<
span
class
="
token punctuation
"
>
,
</
span
>
<
span
class
="
token number
"
>
0
</
span
>
<
span
class
="
token punctuation
"
>
,
</
span
>
<
span
class
="
token number
"
>
24
</
span
>
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token keyword
"
>
if
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
uwRet
<
span
class
="
token operator
"
>
!=
</
span
>
LOS_OK
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
{
</
span
>
<
span
class
="
token function
"
>
dprintf
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
<
span
class
="
token string
"
>
"create queue failure!,error:%x\n"
</
span
>
<
span
class
="
token punctuation
"
>
,
</
span
>
uwRet
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token punctuation
"
>
}
</
span
>
<
span
class
="
token function
"
>
dprintf
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
<
span
class
="
token string
"
>
"create the queue success!\n"
</
span
>
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token function
"
>
LOS_TaskUnlock
</
span
>
<
span
class
="
token punctuation
"
>
(
</
span
>
<
span
class
="
token punctuation
"
>
)
</
span
>
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token comment
"
>
//解锁任务,只有队列创建后才开始任务调度
</
span
>
<
span
class
="
token keyword
"
>
return
</
span
>
LOS_OK
<
span
class
="
token punctuation
"
>
;
</
span
>
<
span
class
="
token punctuation
"
>
}
</
span
>
</
code
>
</
pre
>
</
div
>
<
h3
id
="
结果验证
"
>
<
a
href
="
#结果验证
"
aria-hidden
="
true
"
class
="
header-anchor
"
>
#
</
a
>
结果验证
</
h3
>
<
p
>
<
img
src
="
data:image/png;base64,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
"
alt
>
</
p
>
</
div
>
<
div
class
="
page-edit
"
>
<
div
class
="
edit-link
"
>
<
a
href
="
https://github.com/LiteOS/LiteOS_Documents/edit/master/docs/kernel/queue.md
"
target
="
_blank
"
rel
="
noopener noreferrer
"
>
在 GitHub 上编辑此页
</
a
>
<
svg
xmlns
="
http://www.w3.org/2000/svg
"
aria-hidden
="
true
"
x
="
0px
"
y
="
0px
"
viewBox
="
0 0 100 100
"
width
="
15
"
height
="
15
"
class
="
icon outbound
"
>
<
path
fill
="
currentColor
"
d
="
M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z
"
>
</
path
>
<
polygon
fill
="
currentColor
"
points
="
45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9
"
>
</
polygon
>
</
svg
>
</
div
>
<
div
class
="
last-updated
"
>
<
span
class
="
prefix
"
>
上次更新:
</
span
>
<
span
class
="
time
"
>
2018-7-30 09:40:31
</
span
>
</
div
>
</
div
>
<
div
class
="
page-nav
"
>
<
p
class
="
inner
"
>
<
span
class
="
prev
"
>
←
<
a
href
="
/kernel/interrupt.html
"
class
="
prev
"
>
中断
</
a
>
</
span
>
<
span
class
="
next
"
>
<
a
href
="
/kernel/event.html
"
>
事件
</
a
>
→
</
span
>
</
p
>
</
div
>
</
div
>
<!---->
</
div
>
</
div
>
<
script
src
="
/assets/js/55.8e86f10b.js
"
defer
>
</
script
>
<
script
src
="
/assets/js/app.33a5764c.js
"
defer
>
</
script
>
</
body
>
</
html
>
Back
|
FazBrowse Home
|
New Git URL