GNU/Linux >> LINUX-Kenntnisse >  >> Linux

strtok-Funktion Thread-Sicherheit

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.


Linux
  1. Funktionen in Shell-Variablen?

  2. Wo ist die Itoa-Funktion in Linux?

  3. C++ neue Operator-Thread-Sicherheit in Linux und gcc 4

  4. Wie benenne ich einen Thread in Linux?

  5. Ist errno Thread-sicher?

Bash-Funktionen

Detached vs. Joinable POSIX-Threads

Greifen Sie von einem anderen Thread auf Thread-lokal zu

Welcher Thread verarbeitet das Signal?

Unbekannte Funktion:vundle#begin

Längenbeschränkung für system()-Funktionszeichenfolgen