Ich bin verwirrt darüber, wenn es notwendig ist, das Problem der Threadsicherheit beim Schreiben eines neuen Op zu berücksichtigen.TensorFlow: Threadsicherheit des Klassenmitglieds beim Hinzufügen eines neuen Op
In TensorFlow How-to add a new op guide, lese ich unten Satz, der die Benutzer daran erinnert, einen Mutex hinzuzufügen, um Datenrennen zu verhindern.
Wichtiger Hinweis: Auf Instanzen Ihres OpKernel kann gleichzeitig zugegriffen werden. Ihre Compute-Methode muss Thread-sicher sein. Schütze alle Zugriff auf Klassenmitglieder mit einem Mutex (Oder noch besser, nicht teilen über Klassenmitglieder! Erwägen Sie mit einem ResourceMgr zu verfolgen Op Zustand).
jedoch im gefolgt Text in der Web-Seite über how to add attr to op, ich die Klasse Mitglied gefunden int preserve_index_;
nicht durch Mutex im gegebenen Code-Schnipsel geschützt:
class ZeroOutOp : public OpKernel {
public:
explicit ZeroOutOp(OpKernelConstruction* context) : OpKernel(context) {
// Get the index of the value to preserve
OP_REQUIRES_OK(context,
context->GetAttr("preserve_index", &preserve_index_));
// Check that preserve_index is positive
OP_REQUIRES(context, preserve_index_ >= 0,
errors::InvalidArgument("Need preserve_index >= 0, got ",
preserve_index_));
}
void Compute(OpKernelContext* context) override {
// ...
}
private:
int preserve_index_;
};
So ist es ein impliziter Mechanismus in TensorFlow, um die Variable "preserve_index_" vor Datenrennen zu schützen? Wenn ja, könnten Sie mir bitte die Position der entsprechenden Codes mitteilen, die die Thread-Sicherheit dieser Variable gewährleistet?
Vielen Dank im Voraus!
notiert! Vielen Dank! :) –