"CreateThread() and WaitForMultipleObjects() are not in hwloc since they have nothing to do with topologies."
I thought hwloc was also for threading? "DWORD_PTR m_id = 0; DWORD_PTR m_mask = 1 << i; m_threads[i] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)threadMain, (LPVOID)i, NULL, &m_id); SetThreadAffinityMask(m_threads[i], m_mask); This will likely be something such as: hwloc_bitmap_t bitmap = hwloc_bitmap_alloc(); hwloc_bitmap_set_only(bitmap, i); hwloc_set_thread_cpubind(topology, m_threads[i], bitmap, 0); hwloc_bitmap_free(bitmap);" How would I pass a function like threadMain in the above CreateThread function into the thread itself. Someone told me to use this library for this purpose so I wasn't sure what it was made for. How would I create an array m_threads and pass it into hwloc_set_thread_cpubind. I would still need this part then correct? m_threads[i] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)threadMain, (LPVOID)i, NULL, &m_id); I would like to be independent of windows.h by the way, not using windows api calls is the motivation for all of this.