2012-05-03 2 views
1

Я написал библиотеку поверх System.Data.SQLite и понял, что она (моя библиотека) имеет непредсказуемое поведение при использовании Parallel.ForEach. Я мог бы отладить это в конечном итоге (т. Е. Получить/взять время), скорее всего, заблокировав нужные части, но пока скажем, я хочу просто запретить использование Parallel.ForEach или принудительно использовать мою библиотеку для разрешения (или) только один поток, как я продолжу?Запретить или запретить использование Parallel.ForEach

ответ

5

Вы не можете контролировать, как ваш API потребляется внешним кодом. Если это то, что вы абсолютно не можете решить до выпуска, было бы неплохо быть очень откровенным в случаях сбоев в вашей документации (как комментарии XML, так и любой «файл справки»).

+2

Мне просто кажется, что 'Parallel.ForEach' (и др.) Обнаружил * много * тикающих бомб замедленного действия. Доступ к уникальным ресурсам, unchecked, unlocked ... – MPelletier

+0

Похоже, у вас есть рефакторинг! –

+0

«Я почувствовал сильное волнение в Силе, словно миллионы нитей внезапно закричали от ужаса и внезапно замолчали». – MPelletier

3

Несколько быстрых атрибутов резьбы могут решить вашу проблему параллелизма, но это пахнет кончиком гораздо большего айсберга. Исправьте основную причину, а не симптом.

Смежные вопросы