MSDN.WhiteKnight - Stack Overflow answers
Ответ на "Как правильно организовать многопоточность?"
Answer 640340
Если метод WriteCellInTable обращается одновременно из разных потоков к одному и тому же объекту без всякой синхронизации - это неправильно. Результаты измерения производительности такого кода не должны учитываться. Подробнее о синхронизации можно прочитать в данной статье
Но допустим, вы переделываете код, заключив содержимое WriteCellInTable в конструкцию lock. Тогда конфликты исчезнут, но цель увеличения производительности не будет достигнута. Дело в том, что выигрыш в производительности путем использования многопоточности можно получить только если потоки не конкурируют за общие ресурсы: обращаясь к разделяемому ресурсу, потоки будут проводить много времени в ожидании освобождения ресурса, и в итоге толку нет.
Чтобы действительно улучшить производительность, вы должны сделать, чтобы каждый поток оперировал только своим ограниченным множеством ячеек (например, один поток на один лист). Тогда можно ожидать какого-то улучшения производительности.
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.