作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在制作一个多线程 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/
我是一名优秀的程序员,十分优秀!