@@ -34,7 +34,7 @@ std::shared_ptr<WorkerTimer> App::GetTimerWorker() {
34
34
LOG (ERROR) << " worker context manager is nullptr" ;
35
35
return nullptr ;
36
36
}
37
- std::string worker_timer_name = " worker.timer.# 1" ;
37
+ std::string worker_timer_name = " worker.T. 1" ;
38
38
auto w = ev_mgr_->Get <WorkerContext>(worker_timer_name);
39
39
if (w == nullptr ) {
40
40
LOG (ERROR)
@@ -63,14 +63,18 @@ bool App::Init(
63
63
const std::string& lib_dir,
64
64
int thread_pool_size,
65
65
int event_conn_size,
66
- int warning_msg_size) {
66
+ int warning_msg_size,
67
+ int default_pending_queue_size,
68
+ int default_run_queue_size) {
67
69
if (state_.load () != kUninitialized ) {
68
70
return true ;
69
71
}
70
72
71
73
bool ret = true ;
72
74
lib_dir_ = lib_dir;
73
75
warning_msg_size_.store (warning_msg_size);
76
+ default_pending_queue_size_ = default_pending_queue_size;
77
+ default_run_queue_size_ = default_run_queue_size;
74
78
ret &= poller_->Init ();
75
79
ret &= worker_ctx_mgr_->Init (warning_msg_size);
76
80
ret &= ev_conn_mgr_->Init (event_conn_size);
@@ -437,7 +441,7 @@ bool App::StartCommonWorker(int worker_count) {
437
441
for (int i = 0 ; i < worker_count; ++i) {
438
442
auto worker = std::make_shared<WorkerCommon>();
439
443
worker->SetModName (" class" );
440
- worker->SetTypeName (" WorkerCommon " );
444
+ worker->SetTypeName (" C " );
441
445
if (!AddWorker (std::to_string (i), worker)) {
442
446
LOG (ERROR) << " start common worker " << i << " failed" ;
443
447
continue ;
@@ -451,8 +455,8 @@ bool App::StartCommonWorker(int worker_count) {
451
455
bool App::StartTimerWorker () {
452
456
auto worker = std::make_shared<WorkerTimer>();
453
457
worker->SetModName (" class" );
454
- worker->SetTypeName (" timer " );
455
- if (!AddWorker (" # 1" , worker)) {
458
+ worker->SetTypeName (" T " );
459
+ if (!AddWorker (" 1" , worker)) {
456
460
LOG (ERROR) << " start timer worker failed" ;
457
461
return false ;
458
462
}
@@ -557,6 +561,10 @@ void App::CheckStopWorkers() {
557
561
worker_ctx_mgr_->PopFrontIdleWorker ();
558
562
auto common_idle_worker = worker_ctx->GetWorker <WorkerCommon>();
559
563
common_idle_worker->SetActorContext (actor_ctx);
564
+ // 接收队列不空,重新加入等待执行队列
565
+ if (!actor_mailbox->RecvEmpty ()) {
566
+ actor_ctx_mgr_->PushContext (std::move (actor_ctx));
567
+ }
560
568
worker_ctx->GetCmdChannel ()->SendToOwner (CmdChannel::Cmd::kRun );
561
569
} else {
562
570
LOG (ERROR) << actor_ctx->GetActor ()->GetActorName () << " has no msg" ;
@@ -816,4 +824,12 @@ std::string App::GetLibName(const std::string& name) {
816
824
#endif
817
825
}
818
826
827
+ int App::GetDefaultPendingQueueSize () const {
828
+ return default_pending_queue_size_;
829
+ }
830
+
831
+ int App::GetDefaultRunQueueSize () const {
832
+ return default_run_queue_size_;
833
+ }
834
+
819
835
} // namespace myframe
0 commit comments