Großartig!Threads - Mac vs Linux
Ich habe gerade meine Implementierung auf Mac mit g++/clang
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/c++/4.2.1
Apple LLVM version 8.1.0 (clang-802.0.42)
Target: x86_64-apple-darwin16.7.0
Thread model: posix
und getestet meinen Code auf Linux
g++ (Debian 4.7.2-5) 4.7.2
ein relativ einfaches Einfädeln des laufenden Betriebs. Was auf dem Mac gearbeitet, nicht auf Linux jetzt mit:
terminate called after throwing an instance of 'std::system_error'
what(): Operation not permitted
#include <cstddef>
#include <memory>
#include <stdlib.h>
#include <iostream>
#include <thread>
#include <vector>
#include <stdexcept>
std::vector<std::thread> threads;
std::vector<std::tuple<std::size_t, std::size_t>> parts = splitRows(maxNumberThreads, elements);
for (std::size_t threadIndex = 0; threadIndex < maxNumberThreads; threadIndex++)
{
threads.push_back(std::thread(compute<T>,parts[threadIndex], numbers, std::ref(*this),std::ref(other),std::ref(target)));
}
mit der Funktion Thread definiert. Hinzufügen von Prints in compute
es springt überhaupt nicht in die Funktion ... Eine Idee, warum dies passiert?
template<typename T>
void compute(const std::tuple<std::size_t,std::size_t> part,
const std::size_t numbers,
const MyClass<T>& m1,
const MyClass<T>& m2,
MyClass<T>& target){
Ich Kompilieren mit
g++ -Wall main.cpp -o matrix.exe -std=c++11
aber den obigen Laufzeitfehler erhalten. Irgendwelche Ideen, wie das zu beheben ist? Ich benutze std Bibliotheken nur, nichts Besonderes ...
Ja, hat funktioniert. Vielen Dank! Warum benötigt Linux pthread, während mac ohne umgehen kann? –