C 我使用以下代码杀死了单线程。如何使用此代码杀死线程数组?
您可以使用选择的任何方法杀死一个或多个线程。您正在编写线程运行的代码,因此您可以将它们编码为在您喜欢的任何条件下终止。没有特别的限制 顺便说一下,你的代码不会杀死一个线程 SIGKILL信号被发送到进程,使其立即终止。与SIGTERM和SIGINT相反,该信号不能被捕获或忽略,接收过程在接收到该信号时不能执行任何清理。-C 我使用以下代码杀死了单线程。如何使用此代码杀死线程数组?,c,multithreading,pthreads,posix,C,Multithreading,Pthreads,Posix,您可以使用选择的任何方法杀死一个或多个线程。您正在编写线程运行的代码,因此您可以将它们编码为在您喜欢的任何条件下终止。没有特别的限制 顺便说一下,你的代码不会杀死一个线程 SIGKILL信号被发送到进程,使其立即终止。与SIGTERM和SIGINT相反,该信号不能被捕获或忽略,接收过程在接收到该信号时不能执行任何清理。- 所以你让一个线程终止进程,它就这么做了。如果您觉得需要强制某个线程执行某些操作,这意味着您没有将该线程编码为一开始希望它执行的操作。不要试图杀死一个线程,而是对该线程进行编码,
所以你让一个线程终止进程,它就这么做了。如果您觉得需要强制某个线程执行某些操作,这意味着您没有将该线程编码为一开始希望它执行的操作。不要试图杀死一个线程,而是对该线程进行编码,使其自行终止。请正确设置代码格式。有人给我答复吗?你已经就同一主题提出了4个问题。如果你仍然没有得到任何回应,这意味着你没有马上问这个问题。告诉我们你的代码在做什么,到目前为止你理解了什么,你被困在哪里等等。仅仅发布一堆代码并请求ppl帮助是没有帮助的。我已经用注释解释了我在c中创建了两个pthread,然后在thread function中1 i在执行thread1后我想杀死thread2。我的问题是,我该如何修改它,从任何其他正在执行的线程中删除线程数组?你可以发布一些代码吗。这符合我的问题,我想问的是,当我们从任何单个线程中出来时,如何杀死剩余线程的数组@DavidSchwartz@user1208381您可以使用任何您喜欢的线程同步方法。例如,可以使用受互斥锁保护的布尔值。可以使用谓词变量、互斥量和条件变量。你想怎么做就怎么做。您正在编写这些线程执行的代码,因此您可以将其编码为在您喜欢的任何条件下终止。您可以用代码解释吗?我试图杀死线程数组,但我不会!看到我的答案了,但老实说,我没有看到任何证据表明你理解其中涉及的任何问题。似乎不太可能为您的问题提供一个您能够理解的答案,而不必学习更多关于多线程的基础知识。@user1208381这不是4chan实际上,即使4chan有礼仪。在这里,我们通常不使用“u”表示“你”,也不使用“plz”表示“请”。你的写作看起来一点也不在乎。你先开始写正确的英语怎么样?如果你的问题看起来像是你给了他们一些努力,人们会更愿意帮助你。
#include<stdio.h>
#include<signal.h>
#include<pthread.h>
void *print1(void *tid) {
pthread_t *td= tid;//assigning argument to pointer td
pthread_mutex_t lock1=PTHREAD_MUTEX_INITIALIZER;//mutex for synchronization
printf("Running Thread 1\n");
pthread_mutex_lock(&lock1);
printf("1");
printf("2");
printf("3");
printf("4\n");
printf("Coming out of thread1\n");
sleep(2);
pthread_mutex_unlock(&lock1);
pthread_kill(*td,SIGKILL);//or we can use pthread_cancel(*td) killing thread 2
pthread_exit(NULL);
} void *print2(void *arg) {
pthread_mutex_t *lock = arg;//acquiring lock
pthread_mutex_lock(lock);
sleep(5); //sleeps for 5 sec
printf("5");
sleep(5);//sleeps for 5 sec
printf("6");
sleep(5);//sleeps for 5 sec
printf("7");
sleep(5);//sleeps for 5 sec
printf("8\n");
pthread_mutex_unlock(lock);
pthread_exit(NULL);
} int main() {
int s;
pthread_t tid1, tid2;//thread id's
pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
printf("creating Thread 1and 2 \n");
sleep(2);
pthread_create(&tid1, NULL, print1,&tid2);//creating thread1
pthread_create(&tid2, NULL, print2,&lock);//creating thread2
sleep(2);
pthread_join(tid1, NULL);//joing to execute thread1
pthread_join(tid2, NULL);
return 0; }