Код: Выделить всё
#define _GNU_SOURCE
#include
#include
int attachCurrentThreadToCore(int core);
int main(void) {
return 0;
}
int attachCurrentThreadToCore(int core) {
pthread_t thread;
thread = pthread_self();
cpu_set_t set;
CPU_ZERO(&set);
CPU_SET(core, &set);
return pthread_setaffinity_np(thread, sizeof(cpu_set_t), &set);
}
Это мой тестовый код Pinvoke:
[DllImport("/home/anon/Documents/RadFramework/RadFramework.Libraries.Threading/src/TestProject1/bin/Debug/net5.0/pthreadWrapper")]
private static extern int attachCurrentThreadToCore(int core);
[Test]
public void Test1()
{
attachCurrentThreadToCore(0);
while (true)
{
}
}
< /code>
Теперь я ожидаю, что Core 1 на моей машине будет вращаться в цикле Whice. Вместо этого я получаю это исключение, когда Pinvoking:
Невозможно загрузить общую библиотеку '/home/anon/documents/radframework/radframework.libraries.threading/src/testproject1/bin/debug/net5. 0/pthreadwrapper 'или одна из его зависимостей. Чтобы помочь диагностировать проблемы с загрузкой, рассмотрите возможность установления переменной среды LD_DEBUG: /HOME/Anon/documents/radframework/radframework.libraries.threading/src/testproject1/bin/debug/net5.0/pthreadwper: невозможно динамически нагружать позиционировать позицию. Исполняемая < /p>
Я думаю, что это сводится к «не может динамически загружать независимый от положения исполняемый C Библиотека?
Подробнее здесь: https://stackoverflow.com/questions/701 ... otnet-core
Мобильная версия