Я делаю многопоточную программу C, которая включает в себя совместное использование глобального динамического целочисленного массива между двумя потоками. Один поток будет продолжать добавлять к нему элементы & другой будет независимо сканировать массив & бесплатно отсканированные элементы. может предложить любой из меня так, как я могу сделать это, потому что я делаю это создание тупиковой ситуации Пожалуйста, может ли один предоставить код для него или способ решения этой тупиковой ситуации с полным объяснениемМногопоточность и тупик
ответ
Для резьбы I будет использовать 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*
вы можете его объяснить больше –
Его некоторые из того, насколько я полезен для вас, как-то полезен для меня, но не точно –
В подобных случаях, вы должны смотреть на частоту и нагрузки генерируемой каждой операции на массиве. Например, если массив проверяется непрерывно, но добавляется только один раз в час, его стоит найти очень медленный механизм задержки с задержкой, который устраняет необходимость блокировки чтения. В этом случае блокировка каждого доступа с помощью мьютекса будет очень неудовлетворительной.
Без подробностей о работе «сканирования», особенно продолжительности и частоты, невозможно предложить стратегию связи потоков для хорошей производительности.
Anohter вещь ee не знаю, являются последствия отказа - не имеет значения, если новое дополнение находится в очереди на некоторое время, прежде чем вставлять его, или может.
Если вы хотите, чтобы «Computer Science 101» отвечал, возможно, очень плохой производительностью, заблокируйте каждый доступ к массиву с помощью мьютекса.
Существует несколько потоков для написания что глобальный массив, но только один поток для его чтения и эта задача непрерывна, и я не уверен, какое время пишет нить или какой поток чтения читает время. Для этого мне нужно использовать взаимное исключение для этого или какого-либо другого метода для завершения этого –
больше предложений –
Выпуск 6 содержит очередь безблокировочного.
Компиляция из коробки для Windows и Linux.
- 1. Когда тупик не тупик?
- 2. NSManagedObjectContexts и Многопоточность
- 3. Сервер разработки Rails, PDFKit и многопоточность
- 4. Интерпретировать тупик и исправить его
- 5. Условная переменная и тупик rwlock
- 6. Тупик с PyMongo и gevent
- 7. MPI отправить и принять тупик
- 8. Семафоры и тупик в java
- 9. Многопоточность и pthread_join
- 10. Python unittest и многопоточность
- 11. onperformsync и многопоточность
- 12. waveOut (Win32API) и многопоточность
- 13. Многопоточность и MFC
- 14. Многопоточность и сигнализация процесса
- 15. HTTPS запросы и многопоточность
- 16. Таймеры и многопоточность
- 17. ContentProvider и многопоточность
- 18. Многопоточность и oop
- 19. TransX WCF и многопоточность
- 20. Entity Framework и многопоточность
- 21. autofac и многопоточность
- 22. JMH и многопоточность
- 23. Синхронизация и многопоточность
- 24. Статическая и нестатическая многопоточность
- 25. GCM и многопоточность
- 26. Многопоточность и MessageDlgPos
- 27. Статические переменные и многопоточность
- 28. Многопоточность и рекурсия
- 29. C# и Awesomium - многопоточность
- 30. nHibernate session и многопоточность
Нет. Скопируйте свой код, чтобы мы могли его исправить. – nos
На этот вопрос нельзя ответить как есть. Закрыть. – usr
У меня нет кода uptill еще, я нахожусь в середине моего анализа и застрял в нем, поэтому мне нужен POC также –