Skip to content

Commit ce01c69

Browse files
committed
up faq
1 parent efd81cd commit ce01c69

File tree

2 files changed

+18
-17
lines changed

2 files changed

+18
-17
lines changed

content/cn/co/faq.md

+12-15
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,13 @@ title: "FAQ"
77

88
## 如何修改配置项的值?
99

10-
**[flag](../flag/)** 是 coost 提供的命令行参数与配置文件解析库。coost 中的日志、协程、网络等模块使用 flag 定义了一些配置项,用户可以**通过命令行参数或配置文件修改配置项的值**。命令行中的用法见[命令行中使用 flag](../flag/#命令行中使用-flag),配置文件的用法见[配置文件](../flag/#配置文件)。需要注意,**修改配置项需要在 main 函数开头调用 [flag::parse](../flag/#flagparse) 解析命令行参数**
10+
**[flag](../flag/)** 是 coost 中的配置管理组件,它定义的配置项(也称flag),可以**通过命令行参数或配置文件修改**,具体用法见[命令行中使用 flag](../flag/#命令行中使用-flag)[配置文件](../flag/#配置文件)
1111

12-
```cpp
13-
int main(int argc, char** argv) {
14-
flag::parse(argc, argv);
15-
return 0;
16-
}
17-
```
12+
{{< hint warning >}}
13+
使用 flag 库需要在 main 函数开头调用 [flag::parse](../flag/#flagparse) 解析命令行参数。
14+
{{< /hint >}}
1815

19-
用户也可以通过 API [flag::set_value](../flag/#flagset_value) 修改配置项的值:
16+
另外也可以通过 API [flag::set_value](../flag/#flagset_value) 修改配置项的值:
2017

2118
```cpp
2219
int main(int argc, char** argv) {
@@ -28,7 +25,7 @@ int main(int argc, char** argv) {
2825
```
2926
3027
{{< hint info >}}
31-
`flag::set_value``flag::parse` 之前,这样用户仍然能够通过命令行参数、配置文件修改相关配置项的值。
28+
此处 `flag::set_value` 在 `flag::parse` 之前,这样用户仍然能够通过命令行参数、配置文件修改相关配置项的值。
3229
{{< /hint >}}
3330
3431
@@ -53,7 +50,7 @@ int main(int argc, char** argv) {
5350

5451
## 如何使用 flag 别名?
5552

56-
[flag](../flag/) 支持别名,定义了别名的 flag,在命令行参数、配置文件中,可以用别名取代原名。flag 别名有两种用法,第一种是在定义 flag 时指定别名
53+
[flag](../flag/) 支持别名,定义了别名的 flag,在命令行参数、配置文件中,可以用别名代替原名。给 flag 添加别名有两种方法,第一种是在定义 flag 时指定
5754

5855

5956
```cpp
@@ -62,7 +59,7 @@ DEF_bool(debug, false, "xxx", d); // 别名 d
6259
DEF_bool(debug, false, "xxx", d, dbg); // 两个别名: d, dbg
6360
```
6461
65-
还有一种情况,flag 已经定义,且用户无法修改 flag 的定义时,可以用 [flag::alias](../flag/#flagalias) 设置别名,如 coost 内部定义了 string 类型的 flag `version`,用户可以用如下方式给它设置别名:
62+
还有一种情况,flag 已经定义,且用户无法修改该定义时,可以用 [flag::alias](../flag/#flagalias) 设置别名,如 coost 内部定义的 string 类型的 flag `version`,用户可以用如下方式给它设置别名:
6663
6764
```cpp
6865
int main(int argc, char** argv) {
@@ -110,7 +107,7 @@ coost v3.0.1 基于 flex 与 [byacc](https://invisible-island.net/byacc/) 重写
110107
111108
**频繁创建、销毁线程是设计上的错误。**
112109
113-
coost 中使用了 TLS (线程局部存储),频繁创建、销毁线程时,一些 TLS 资源在线程退出时并不会自动销毁,从而导致内存泄露。
110+
coost 中使用了 TLS (线程局部存储),频繁创建、销毁线程,一些 TLS 资源在线程退出时并不会自动销毁,从而导致内存泄露。
114111
115112
尽管 C++ 标准中的 `thread_local`,可以保证 TLS 对象在线程退出时自动析构,但是**在线程退出时析构 TLS 对象并不总是正确的行为**,如基于 TLS 实现的内存分配器,一个线程退出时,该线程中分配的内存,可能还在被其他线程使用,这个时候释放该线程的 TLS 资源,可能会导致程序崩溃。
116113
@@ -130,7 +127,7 @@ coost 中协程支持多线程调度,默认线程数为系统 CPU 核数,用
130127
131128
## 协程是否会出现栈溢出?
132129
133-
coost 协程默认栈大小为 `1M`,足够大,一般不会出现栈溢出。如果 1M 不够,用户可[通过配置项改大一些](../concurrency/coroutine/conf/#co_stack_size)。
130+
coost 协程默认栈大小为 `1M`,足够大,一般不会出现栈溢出。如果 1M 不够,可以[通过配置项改大一些](../concurrency/coroutine/conf/#co_stack_size)。
134131
135132
136133
@@ -146,7 +143,7 @@ coost 协程 hook 了系统 socket 相关 API,可以在协程中直接使用 m
146143
147144
148145
149-
## 如何将主线程变成协程调度线程
146+
## 主线程可以设置成协程调度线程吗
150147
151148
coost 中调度线程默认是独立于主线程运行的,可借助 [co::main_sched](../concurrency/coroutine/api/#comain_sched) 将主线程设置为协程调度线程:
152149
@@ -170,5 +167,5 @@ int main(int argc, char** argv) {
170167
```
171168

172169
{{< hint warning >}}
173-
须在**创建协程之前**调用 `co::main_sched` (该方法返回指向 `MainSched` 的指针) 将主线程标记为调度线程,创建协程后,再调用 `MainSched``loop` 方法启动该协程调度器。
170+
须在**创建协程之前**调用 `co::main_sched` (该方法返回 `MainSched` 指针) 将主线程标记为调度线程,创建协程后,再调用 `MainSched``loop` 方法启动该协程调度器。
174171
{{< /hint >}}

content/cn/co/flag.md

+6-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ include: [co/flag.h](https://github.com/idealvin/coost/blob/master/include/co/fl
1414

1515
### flag 变量
1616

17-
co.flag 中的宏定义的全局变量,称为 **flag 变量**。如下面的代码定义了一个 flag 变量,变量名是 `FLG_x`
17+
co.flag 中的宏定义的**配置项**,实际上是全局变量,称为 **flag 变量**。如下面的代码定义了一个 flag 变量,变量名是 `FLG_x`
1818

1919
```cpp
2020
DEF_int32(x, 0, "xxx"); // int32 FLG_x = 0;
@@ -32,7 +32,11 @@ bool, int32, int64, uint32, uint64, double, string
3232

3333
### command line flag
3434

35-
命令行参数中,以 `-x=y` 的形式出现,其中 `x` 被称为一个 **command line flag**(以下简称为 flag)。命令行中的 flag `x` 对应代码中的全局变量 `FLG_x`,命令行中的 `-x=y` 就相当于将 `FLG_x` 的值设置为 `y`。为了方便,下面可能将 flag 与 flag 变量统一称为 flag。
35+
命令行参数中,以 `-x=y` 的形式出现,其中 `x` 被称为一个 **command line flag**(以下简称为 flag)。命令行中的 flag `x` 对应代码中的全局变量 `FLG_x`,命令行中的 `-x=y` 就相当于将 `FLG_x` 的值设置为 `y`
36+
37+
{{< hint info >}}
38+
为了方便,本文档中可能将 command line flag、flag 变量统一称为 flag。
39+
{{< /hint >}}
3640

3741
co.flag 为了简便易用,设计得非常灵活:
3842

0 commit comments

Comments
 (0)