aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLAN-TW <lantw44@gmail.com>2012-11-15 01:13:31 +0800
committerLAN-TW <lantw44@gmail.com>2012-11-15 01:14:37 +0800
commit97ab8270ab1c3aed71458b3d00a638743b238004 (patch)
treebca22410fb9fd4ca4cd007a096211e1cece0c7c9
parenta0a8496f1e04dc964e29cc4661193e92662eaffd (diff)
downloadsctjudge-97ab8270ab1c3aed71458b3d00a638743b238004.tar.gz
sctjudge-97ab8270ab1c3aed71458b3d00a638743b238004.tar.zst
sctjudge-97ab8270ab1c3aed71458b3d00a638743b238004.zip
更改 sctjudge_makechild_cleanup_p1() 中 sem_post() 的位置
基本上 sem_post() 目前來說是可以去掉,不過先暫時保留。
-rw-r--r--src/mkchild.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/mkchild.c b/src/mkchild.c
index ee370f5..fe2ee8c 100644
--- a/src/mkchild.c
+++ b/src/mkchild.c
@@ -95,10 +95,6 @@ static const char* childmsg_text[SCTCHILD_MSGMAX] = {
};
static void sctjudge_makechild_cleanup_p1(void){
- /* 避免有 thread 卡在 sem 上砍不掉 */
- sem_post(&addthr);
- sem_post(&addthr);
-
pthread_mutex_lock(&tkill_mx);
if(tkill_yes){
tkill_yes = 0;
@@ -116,6 +112,10 @@ static void sctjudge_makechild_cleanup_p1(void){
}else{
pthread_mutex_unlock(&tdisplay_mx);
}
+
+ /* 這基本上應該是可以去掉的,sem_wait() 也是 cancellation point */
+ sem_post(&addthr);
+ sem_post(&addthr);
}
static void sctjudge_makechild_cleanup_p2(mcopt, oldperm, copiedexe)