gpt4 book ai didi

c - 多线程和死锁

转载 作者:行者123 更新时间:2023-11-30 20:16:26 27 4
gpt4 key购买 nike

我正在制作一个多线程 C 程序,其中涉及在两个线程之间共享全局动态整数数组。一个线程将继续向其中添加元素,另一个线程将独立扫描数组并释放扫描的元素。任何人都可以建议我如何做到这一点,因为我正在做的事情正在造成僵局还请任何人提供它的代码或一种解决此死锁的方法并提供完整的解释

最佳答案

对于线程,我将使用 pthread。使用-pthread编译它。

#include <pthread.h>

int *array;

// return and argument should be `void *` for pthread
void *addfunction(void *p) {
// add to array
}

// same with this thread
void *scanfunction(void *p) {
// scan in array
}

int main(void) {
// pthread_t variable needed for pthread
pthread_t addfunction_t, scanfunction_t; // names are not important but use the same for pthread_create() and pthread_join()
// start the threads
pthread_create(&addfunction_t, NULL, addfunction, NULL); // the third argument is the function you want to call in this case addfunction()
pthread_create(&scanfunction_t, NULL, scanfunction, NULL); // same for scanfunction()
// wait until the threads are finish leave out to continue while threads are running
pthread_join(addfunction_t, NULL);
pthread_join(scanfunction_t, NULL);
// code after pthread_join will executed if threads aren't running anymore
}

这是 pthread 的一个很好的示例/教程:*klick*

关于c - 多线程和死锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10447600/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com