На Win32, как Вы перемещаете поток в другое ядро процессора?

Для создания Chrome-расширения с помощью Vuejs вы можете использовать этот шаблон. Убедитесь, что вы установили vue-cli, если он не установлен, вы можете установить его с помощью `npm install -g @ vue / cli.

После установки vue-cli запустите этот cmd: vue init kocal/vue-web-extension my-extension. Он загрузит и установит шаблон шаблона vuejs для расширения chrome в ваш текущий каталог. Затем вы можете перейти во вновь созданный каталог и установить зависимости с помощью команды npm install.

Теперь вы полностью настроили приложение vuejs для вашего chrome-расширения, но оно откроется как всплывающее окно, чтобы сделать его видимым на новой вкладке, и потребует некоторой модификации, как я дал ниже.

  1. Сначала перейдите к файлу src/manifest.json и удалите "default_popup": "popup/popup.html" из "browser_action"
  2. Затем перейдите к файлу src/background.js и удалите весь указанный код и замените его на код приведен ниже.

    chrome.browserAction.onClicked.addListener(function (tab) {
        chrome.tabs.create(
            {
                url: chrome.extension.getURL('./popup/popup.html'),
            },
            function (tab) { }
        );
    });
    
  3. Теперь запустите run npm run build, и он сгенерирует папку dist, которую вы можете использовать в качестве папки расширения. Это вы можете открыть в Chrome, используя опцию Load unpacked в меню расширений Chrome.

И все готово. Вы можете увидеть приложение vuejs, работающее в окне новой вкладки, нажав на значок расширения.

1120 Дайте мне знать, сработало это или нет, если не сработало, тогда, пожалуйста, позвольте мне знать, с какой проблемой вы столкнулись.

7
задан Lorenzo Donati supports Monica 30 September 2013 в 21:24
поделиться

4 ответа

Необходимо, вероятно, просто использовать SetThreadAffinityMask и положить, что он работает.

MSDN

10
ответ дан 6 December 2019 в 10:55
поделиться

Если Вы могли бы вызвать функцию, которая возвращает число, указывающее, на чем ЦП поток работает, не используя привязку, ответ часто был бы неправильным как только возвращенная функция. Так проверяя маску, возвращенную SetThreadAffinityMask() так близко, как Вы собираетесь добраться, за пределами кода ядра, работающего в поднятом IRQL, и даже это изменяется.

Это кажется, что Вы пытаетесь работать вокруг RDTSC проблемы расфазировки тактовых сигналов. Если Вы используете RDTSC инструкция непосредственно, рассмотрите вызов QueryPerformanceCounter() вместо этого:

  • QueryPerformanceCounter() на использовании Windows Vista HPET, если это поддерживается чипсетом и находится в таблицах ACPI системы.
  • Основанные на AMD системы с помощью Драйвера Процессора AMD главным образом компенсируют многоядерную расфазировку тактовых сигналов, если Вы будете звонить QueryPerformanceCounter(), но это ничего не делает для приложений то использование RDTSC непосредственно. AMD Двухъядерный Оптимизатор является взломом для приложений то использование RDTSC непосредственно, но если объем расфазировки тактовых сигналов изменится из-за сползания часов C1 (где тактовая частота уменьшается в состоянии электропитания C1), у Вас все еще будет расфазировка тактовых сигналов. И эти утилиты, вероятно, не очень широко распространены, настолько использующая привязка с QueryPerformanceCounter() все еще хорошая идея.
4
ответ дан 6 December 2019 в 10:55
поделиться

Нет никакой потребности в GetThreadAffinityMask. Просто получите значение GetProcessAffinityMask, выключите некоторые биты, затем назовите SetThreadAffinityMask. Потоки наследовали маску привязки процесса, и так как их привязка находится под Вашим контролем, Вы уже знаете маску привязки потока (это - то, которое Вы устанавливаете его на).

1
ответ дан 6 December 2019 в 10:55
поделиться

Что сказал Ken. Но если Вы не полагаете, что это работает, можно назвать SetThreadAffinityMask снова и подтвердить, что возвращаемое значение соответствует тому, чем Вы ожидаете, что маска будет. (Но затем конечно, если Вы не доверяете функции затем, Вы не можете доверять второму вызову...),

Не смущайтесь существованием GetProcessAffinityMask. Та функция не состоит в том, чтобы там проверить, что SetProcessAffinityMask работал, но например, таким образом, можно создать привязку потока, которая является подмножеством привязки процесса.

Просто посмотрите, что возвращаемое значение и проверяет, что это не 0, и необходимо быть в порядке.

3
ответ дан 6 December 2019 в 10:55
поделиться