Skip to content

Commit c9521fc

Browse files
authored
rename emit to emits (#429)
1 parent bba56e3 commit c9521fc

File tree

8 files changed

+48
-48
lines changed

8 files changed

+48
-48
lines changed

async_simple/Signal.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ class Signal : public std::enable_shared_from_this<Signal> {
9595
// binding slots, then execute the slot callback functions. It will return
9696
// the signal which success triggered. If no signal success triggger, return
9797
// SignalType::none.
98-
SignalType emit(SignalType state) noexcept;
98+
SignalType emits(SignalType state) noexcept;
9999

100100
// Return now signal type.
101101
SignalType state() const noexcept {
@@ -320,7 +320,7 @@ class Slot {
320320
[chainedSignal =
321321
chainedSignal->weak_from_this()](SignalType type) {
322322
if (auto signal = chainedSignal.lock(); signal != nullptr) {
323-
signal->emit(type);
323+
signal->emits(type);
324324
}
325325
}),
326326
std::memory_order_release);
@@ -451,7 +451,7 @@ inline detail::SignalSlotSharedState::~SignalSlotSharedState() {
451451
}
452452
}
453453

454-
inline SignalType Signal::emit(SignalType state) noexcept {
454+
inline SignalType Signal::emits(SignalType state) noexcept {
455455
if (state != SignalType::None) {
456456
SignalType vaildSignal = UpdateState(_state, state);
457457
if (vaildSignal) {

async_simple/coro/Collect.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ struct CollectAnyAwaiter {
191191
_result->_idx = i;
192192
_result->_value = std::move(result);
193193
if (auto ptr = local->getSlot(); ptr) {
194-
ptr->signal()->emit(_SignalType);
194+
ptr->signal()->emits(_SignalType);
195195
}
196196
c.resume();
197197
}
@@ -294,7 +294,7 @@ struct CollectAnyVariadicAwaiter {
294294
_result = std::make_unique<ResultType>(
295295
std::in_place_index_t<index>(), std::move(res));
296296
if (auto ptr = local->getSlot(); ptr) {
297-
ptr->signal()->emit(_SignalType);
297+
ptr->signal()->emits(_SignalType);
298298
}
299299
c.resume();
300300
}
@@ -409,7 +409,7 @@ struct CollectAllAwaiter {
409409
auto signalType = _SignalType;
410410
auto awaitingCoro = _event.down(oldCount, 1);
411411
if (oldCount == size) {
412-
signal->emit(signalType);
412+
signal->emits(signalType);
413413
}
414414
if (awaitingCoro) {
415415
awaitingCoro.resume();
@@ -582,7 +582,7 @@ struct CollectAllVariadicAwaiter {
582582
auto signalType = _SignalType;
583583
auto awaitingCoro = _event.down(oldCount, 1);
584584
if (oldCount == sizeof...(Ts)) {
585-
signal->emit(signalType);
585+
signal->emits(signalType);
586586
}
587587
if (awaitingCoro) {
588588
awaitingCoro.resume();

async_simple/coro/test/LazyTest.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,7 @@ TEST_F(LazyTest, testYieldCancel) {
360360
EXPECT_EQ(result.hasError(), true);
361361
p.set_value();
362362
});
363-
signal->emit(SignalType::Terminate);
363+
signal->emits(SignalType::Terminate);
364364
p.get_future().wait();
365365
}
366366

@@ -2020,7 +2020,7 @@ TEST_F(LazyTest, testForbiddenCancel) {
20202020
EXPECT_EQ(slot->signal()->state(), SignalType::Terminate);
20212021
};
20222022
lazy(p.getFuture()).setLazyLocal(signal.get()).via(&e).detach();
2023-
signal->emit(SignalType::Terminate);
2023+
signal->emits(SignalType::Terminate);
20242024
p.setValue();
20252025
}
20262026
{
@@ -2037,7 +2037,7 @@ TEST_F(LazyTest, testForbiddenCancel) {
20372037
EXPECT_EQ(slot, nullptr);
20382038
};
20392039
lazy(p.getFuture()).setLazyLocal(signal.get()).via(&e).detach();
2040-
signal->emit(SignalType::Terminate);
2040+
signal->emits(SignalType::Terminate);
20412041
p.setValue();
20422042
}
20432043
}

async_simple/coro/test/SleepTest.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ Lazy<void> cancelSleep() {
137137
EXPECT_TRUE(err.value() == async_simple::Terminate);
138138
}
139139
auto slot = co_await async_simple::coro::CurrentSlot{};
140-
auto ok = slot->signal()->emit(SignalType::Terminate);
140+
auto ok = slot->signal()->emits(SignalType::Terminate);
141141
if (ok) {
142142
std::cout << "Coro " << i << " emit cancel work" << std::endl;
143143
} else {

async_simple/coro/test/SpinLockTest.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ TEST_F(SpinLockTest, testSpinLockCancel) {
121121
auto signal = async_simple::Signal::create();
122122
std::promise<void> p;
123123
if (cancelFirst) {
124-
signal->emit(SignalType::Terminate);
124+
signal->emits(SignalType::Terminate);
125125
}
126126
std::move(lazy)
127127
.setLazyLocal(signal.get())
@@ -132,7 +132,7 @@ TEST_F(SpinLockTest, testSpinLockCancel) {
132132
});
133133
if (!cancelFirst) {
134134
std::this_thread::sleep_for(10ms);
135-
signal->emit(SignalType::Terminate);
135+
signal->emits(SignalType::Terminate);
136136
}
137137
p.get_future().wait();
138138
};

async_simple/test/CancellationTest.cpp

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ TEST_F(CancellationTest, testSimpleCancellation) {
4444
return slot->signal()->state();
4545
});
4646
EXPECT_EQ(signal->state() != 0, false);
47-
EXPECT_EQ(signal->emit(SignalType::Terminate), true);
47+
EXPECT_EQ(signal->emits(SignalType::Terminate), true);
4848
EXPECT_EQ(signal->state() != 0, true);
4949
EXPECT_EQ(result.get(), SignalType::Terminate);
5050
EXPECT_EQ(slot->canceled(), true);
@@ -65,7 +65,7 @@ TEST_F(CancellationTest, testCancellationWithNoneType) {
6565
}
6666
return 1;
6767
});
68-
signal->emit(SignalType::None);
68+
signal->emits(SignalType::None);
6969
std::this_thread::sleep_for(10ms);
7070
flag = 1;
7171
EXPECT_EQ(result.get(), 0);
@@ -88,7 +88,7 @@ TEST_F(CancellationTest, testCancellationWithSlotFilter) {
8888
}
8989
return 1;
9090
});
91-
signal->emit(SignalType::Terminate);
91+
signal->emits(SignalType::Terminate);
9292
std::this_thread::sleep_for(10ms);
9393
flag = 1;
9494
EXPECT_EQ(result.get(), 0);
@@ -109,7 +109,7 @@ TEST_F(CancellationTest, testMultiSlotsCancellationCallback) {
109109
j++;
110110
});
111111
}
112-
signal->emit(SignalType::Terminate);
112+
signal->emits(SignalType::Terminate);
113113
EXPECT_EQ(j, 100);
114114
}
115115

@@ -122,7 +122,7 @@ TEST_F(CancellationTest, testMultiSlotsCancellation) {
122122
[[maybe_unused]] auto _ = slots.back()->emplace(
123123
SignalType::Terminate, [&j](SignalType, Signal*) mutable { j++; });
124124
}
125-
signal->emit(SignalType::Terminate);
125+
signal->emits(SignalType::Terminate);
126126
EXPECT_EQ(j, 100);
127127
}
128128

@@ -143,9 +143,9 @@ TEST_F(CancellationTest, testMultiSlotsCancellationWithFilter) {
143143
EXPECT_EQ(type, expected_type);
144144
});
145145
}
146-
signal->emit(expected_type);
146+
signal->emits(expected_type);
147147
EXPECT_EQ(j, 75);
148-
signal->emit(static_cast<SignalType>(0b100));
148+
signal->emits(static_cast<SignalType>(0b100));
149149
EXPECT_EQ(j, 75);
150150
}
151151
{
@@ -164,7 +164,7 @@ TEST_F(CancellationTest, testMultiSlotsCancellationWithFilter) {
164164
EXPECT_EQ(type, expected_type & filter);
165165
});
166166
}
167-
signal->emit(expected_type);
167+
signal->emits(expected_type);
168168
EXPECT_EQ(j, 100);
169169
}
170170
}
@@ -176,7 +176,7 @@ TEST_F(CancellationTest, testScopeFilterGuard) {
176176
[[maybe_unused]] auto _ =
177177
slot->emplace(SignalType::Terminate,
178178
[](SignalType type, Signal*) { EXPECT_TRUE(true); });
179-
signal->emit(SignalType::Terminate);
179+
signal->emits(SignalType::Terminate);
180180
{
181181
auto guard = slot->setScopedFilter(static_cast<SignalType>(1));
182182
EXPECT_TRUE(slot->canceled());
@@ -191,7 +191,7 @@ TEST_F(CancellationTest, testScopeFilterGuard) {
191191
[](SignalType type, Signal*) { EXPECT_TRUE(false); });
192192
{
193193
auto guard = slot->setScopedFilter(static_cast<SignalType>(0b10));
194-
signal->emit(SignalType::Terminate);
194+
signal->emits(SignalType::Terminate);
195195
EXPECT_TRUE(slot->signal()->state() == SignalType::Terminate);
196196
EXPECT_TRUE(slot->canceled() == false);
197197
}
@@ -205,7 +205,7 @@ TEST_F(CancellationTest, testScopeFilterGuard) {
205205
[](SignalType type, Signal*) { EXPECT_TRUE(true); });
206206
{
207207
auto guard = slot->setScopedFilter(SignalType::All);
208-
signal->emit(SignalType::Terminate);
208+
signal->emits(SignalType::Terminate);
209209
EXPECT_TRUE(slot->canceled());
210210
}
211211
EXPECT_TRUE(slot->canceled());
@@ -224,7 +224,7 @@ TEST_F(CancellationTest, testScopeFilterGuardNested) {
224224
{
225225
auto guard =
226226
slot->setScopedFilter(static_cast<SignalType>(0b11100));
227-
signal->emit(static_cast<SignalType>(0b100));
227+
signal->emits(static_cast<SignalType>(0b100));
228228
EXPECT_EQ(slot->getFilter(), static_cast<SignalType>(0b100));
229229
EXPECT_EQ(slot->hasTriggered(static_cast<SignalType>(0b100)),
230230
true);
@@ -246,7 +246,7 @@ TEST_F(CancellationTest, testScopeFilterGuardNested) {
246246
{
247247
auto guard =
248248
slot->setScopedFilter(static_cast<SignalType>(0b11100));
249-
signal->emit(static_cast<SignalType>(0b011));
249+
signal->emits(static_cast<SignalType>(0b011));
250250
EXPECT_EQ(slot->getFilter(), static_cast<SignalType>(0b100));
251251
EXPECT_EQ(slot->canceled(), false);
252252
}
@@ -274,7 +274,7 @@ TEST_F(CancellationTest, testMultiThreadEmit) {
274274
res.emplace_back(std::async([&]() {
275275
while (!start_flag)
276276
std::this_thread::yield();
277-
return signal->emit(SignalType::Terminate);
277+
return signal->emits(SignalType::Terminate);
278278
}));
279279
start_flag = true;
280280
int cnt = 0;
@@ -316,7 +316,7 @@ TEST_F(CancellationTest, testMultiThreadEmitDifferentSignal) {
316316
res.emplace_back(std::async([i, &start_flag, &signal]() {
317317
while (!start_flag)
318318
std::this_thread::yield();
319-
return signal->emit(
319+
return signal->emits(
320320
i % 2
321321
? static_cast<SignalType>(0b101 | (uint64_t{1} << 63))
322322
: static_cast<SignalType>(0b110 | (uint64_t{1} << 63)));
@@ -378,7 +378,7 @@ TEST_F(CancellationTest, testMultiThreadEmitWhenEmplace) {
378378
res.emplace_back(std::async([&]() {
379379
while (!start_flag)
380380
std::this_thread::yield();
381-
return static_cast<bool>(signal->emit(SignalType::Terminate));
381+
return static_cast<bool>(signal->emits(SignalType::Terminate));
382382
}));
383383
start_flag = true;
384384
int cnt = 0;
@@ -423,7 +423,7 @@ TEST_F(CancellationTest, testMultiThreadEmitWhenSetScopedFilter) {
423423
while (!start_flag) {
424424
std::this_thread::yield();
425425
}
426-
signal->emit(SignalType::Terminate);
426+
signal->emits(SignalType::Terminate);
427427
});
428428
}
429429
while (start_flag2 < 200) {
@@ -441,7 +441,7 @@ TEST_F(CancellationTest, testMultiThreadEmitWhenSetScopedFilter) {
441441
TEST_F(CancellationTest, testRegistSignalAfterCancellation) {
442442
{
443443
auto signal = Signal::create();
444-
signal->emit(SignalType::Terminate);
444+
signal->emits(SignalType::Terminate);
445445
Slot s{signal.get()};
446446
EXPECT_FALSE(
447447
s.emplace(SignalType::Terminate, [](SignalType, Signal*) {}));
@@ -469,6 +469,6 @@ TEST_F(CancellationTest, testDerivedSignal) {
469469
EXPECT_EQ(mySignal->myState, 1);
470470
});
471471
mySignal->myState = 1;
472-
mySignal->emit(SignalType::Terminate);
472+
mySignal->emits(SignalType::Terminate);
473473
}
474474
} // namespace async_simple

docs/docs.cn/信号与任务的取消.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,16 +41,16 @@ for (int i=0;i<10;++i) {
4141
}
4242
// ...
4343
// 提交取消信号
44-
signal->emit(SignalType::terminate);
44+
signal->emits(SignalType::terminate);
4545
for (auto &e:works)
4646
e.get();
4747
```
4848

4949
除了直接查询取消状态,我们可以在`Slot`中注册信号处理函数来接受信号。信号处理函数的签名应为`void(SignalType, Signal*)`。第一个参数SignalType代表经过滤后,本次成功触发的信号类型,第二个参数是指向信号的指针。
5050

5151
需要注意的是:
52-
1. 信号处理函数不应该阻塞。调用`emit()`函数并触发信号时,程序会遍历绑定在`Signal`上的信号处理函数并立即执行。
53-
2. 注意线程安全问题:信号处理函数会由调用`emit()`的线程执行,32号以上的信号处理函数还可能由多个线程并发执行。
52+
1. 信号处理函数不应该阻塞。调用`emits()`函数并触发信号时,程序会遍历绑定在`Signal`上的信号处理函数并立即执行。
53+
2. 注意线程安全问题:信号处理函数会由调用`emits()`的线程执行,32号以上的信号处理函数还可能由多个线程并发执行。
5454
3. 信号处理函数禁止持有槽绑定的信号,这会导致信号的内存泄漏。用户应通过`Signal*`参数访问信号。
5555

5656
例如,下面这段代码通过信号回调函数取消睡眠。
@@ -76,7 +76,7 @@ for (int i=0;i<10;++i) {
7676
}
7777
slot->clear(); // 清除回调函数
7878
if (slot->signal()) { //如果槽被绑定在信号上
79-
slot->signal()->emit(SignalType::terminate); // 触发取消信号。
79+
slot->signal()->emits(SignalType::terminate); // 触发取消信号。
8080
}
8181
return;
8282
});
@@ -97,7 +97,7 @@ class Signal
9797
: public std::enable_shared_from_this<Signal> {
9898
public:
9999
// 提交信号(允许一次提交多种信号),并返回本次请求成功触发的信号,线程安全。
100-
SignalType emit(SignalType state) noexcept;
100+
SignalType emits(SignalType state) noexcept;
101101
// 获取当前的信号,线程安全。
102102
SignalType state() const noexcept;
103103
// 创建信号的工厂方法,返回信号的shared_ptr,线程安全。
@@ -140,11 +140,11 @@ std::shared_ptr<Signal> signal = Signal::create();
140140
auto slot = std::make_unique<Slot>(signal.get());
141141
std::shared_ptr<Signal> chainedSignal = Signal::create();
142142
slot->addChainedSignal(chainedSignal);
143-
signal->emit(SignalType::terminate);
143+
signal->emits(SignalType::terminate);
144144
assert(chainedSignal->state()==SignalType::terminate);
145145
// 信号会被转发给chainedSignal
146146
// 然而,chainedSignal触发的信号不会触发给signal
147-
chainedSignal->emit(static_cast<SignalType>(0b10));
147+
chainedSignal->emits(static_cast<SignalType>(0b10));
148148
assert(signal->state()!=static_cast<SignalType>(0b10));
149149
```
150150
@@ -164,7 +164,7 @@ slot->emplace([](SignalType type, Signal* signal) {
164164
std::cout << "myState:" << mySignal->myState << std::endl;
165165
});
166166
mySignal->myState=1;
167-
mySignal->emit(SignalType::terminate);
167+
mySignal->emits(SignalType::terminate);
168168
```
169169

170170

0 commit comments

Comments
 (0)