может кто подскажет, как винда потоки может распределять на мультипроцесорных платформах?
в частности интерисует вопрос могут ли паралельно исполнятся два потока один из них к примеру на PASSIVE_LEVEL а второй например на DISPATCH_LEVEL?
а то судя по всему наступил на грабли... синхронизации драйвера и апликухи....
вопрос второй... синхронизация доступа к данным (тоже на SMP).
допустим есть переменная доступ к которой может осуществлятся и драйвером и приложением... (типа счетчик - инкремент/декремент не единичный)
вопрос засинхронизировать ее изменение... может изменятся достаточно часто, поэтому не хотелось бы использовать мьютексы, семафоры и пр.... остро стоит вопрос производительности
Внимание вопрос
в ДДК есть функции InterlockedExchange - может кто-нибудь знает на чем она основана? случайно не макрос команды add с префиксом lock, и последующим обнулением кеш памяти?
в API есть аналогичная функция... - работает по тому же принципу?
PS а вырос вопрос от того, что начал запускать драйвер - полная ересь творилась, до того момента как в биосе этот самый HyperThreading не отключил. надеялся на приоритеты... мой код на Dispache висел...
PPS кстати может кто скинет ссылочек по мультипроцессорным платформам и тому как с ними микрософт работает? на русском - было бы шиарно, но и на латинице покатит