2017-02-09 5 views
2

В настоящее время я изучаю операционные системы и параллелизм, и мне поручено использовать pthreads в c.Как можно определить идентификаторы потоков?

После попытки понять и использовать pthreads есть несколько вещей, которые я не совсем понимаю.

Если я создаю два отдельных pthreads (два процесса, к моему пониманию), как два потока могут быть равными (pthread_equal)? Или что это значит?

Спасибо!

+0

Нить не является процессом. Поток - это блок задач в процессе, который предназначен для выполнения работы. –

+0

, поэтому, проверяя, совпадают ли два потока, проверяется, объединены ли они в одном процессе? –

+0

Прочтите это: https://linux.die.net/man/3/pthread_equal –

ответ

2

Если создать два отдельных Pthreads (два процесса, в моем понимании), ..

Неа. Нити не являются процессами. (Нити могут быть реализованы с использованием процессов под капотом, но они по-прежнему являются нитями в отношении пользовательских программ и должны рассматривать их как таковые).

Как эти две нити могут быть равными (pthread_equal)? Или что это значит?

Это означает, что он же нити и сообщает pthread_equal(), который сравнивает ли данные идентификаторы нитей (pthread_t) равны. Прямое сравнение с использованием == невозможно, потому что pthread_t является непрозрачным типом, и единственный способ сравнить идентификаторы потоков - использовать API pthread_equal().

Кстати, два потока в разных процессов могут иметь одинаковый идентификатор (pthread_t).