Тобто у Вас є список, який Ви хочете обробляти декількома потоками, при цьому змінювати. Так?
Ви не можете цього зробити (надійно) з зв'язаним списком, бо msdn стверджує, що клас не є потокобезпечним (thread safe):
The LinkedList<T> class does not support chaining, splitting, cycles, or other features that can leave the list in an inconsistent state. The list remains consistent on a single thread. The only multithreaded scenario supported by LinkedList<T> is multithreaded read operations.
тобто Ви не можете змінювати такий список у потоках.
Підемо від простого: Ви маєте список з 4х елементів, два потоки "одержали" по два елементи (так ми гадаємо).
Перший поток вирішив, що треба видалити елемент після останнього (у його частки), а другий - видалити елемент перед першим (з його частки). Що повинно відбутися? Синхронізації у Вас не передбачено (якщо виключити цю маґічну змінну "go").
Може, розбити цей список на декілька автономних, обробити в потоках, а потім злити в один?
Я не знаю повністю Вашої задачі, просто спробую навести Вас самого на якесь прийнятне рішення.
Вибачте, може, це зайве пояснення, якого Ви не потребуєте, але я приведу аналогію.
Обробка у потоках - це як обробка кількома особами однієї деталі одночасно. Якщо не синхронізувати роботу цих "робітників", то кожен з них робить свою справу ніяк не зважаючи на інших. Обов'язково виникнуть конфлікти. Один з робітників вибирає для обрабки "наступний елемент", починає обробляти, і у цей час інший видаляє цей елемент (як приклад).