strtok()
ist nicht MT-sicher, weil es einige Zwischenvariablen global speichert und sie bei jedem Aufruf wiederverwendet (sehen Sie, dass Sie die Zeichenfolge nicht jedes Mal erneut übergeben müssen, wenn Sie strtok()
aufrufen ).Sie können einen Blick auf die Manpages der Methoden werfen, die Sie verwenden, und es wird immer am Ende angegeben, ob es MT-sicher ist oder nicht.
Wenn eine Methode nicht MT-sicher ist (Multi-Thread-sicher oder wiedereintrittsfähig), sollten Sie nach derselben Methode mit dem Suffix _r suchen, was Wiedereintritt bedeutet. In Ihrem Beispiel strtok_r()
wie in der anderen Antwort vorgeschlagen.
strtok()
ist nicht ablaufinvariant, daher sollte es nicht von Thread-Anwendungen verwendet werden, verwenden Sie strtok_r()
stattdessen.