Angenommen, Sie wissen, wie viele Threads PartialCodec
Aufruf werden Sie static
Variablen innerhalb der Funktion können Sie die Kommunikation zwischen Threads erleichtern. Ein blankes static
würde es allen Threads in PartialCodec
ermöglichen, dieselbe Objektinstanz zu bearbeiten.
void * PartialCodec (void *arg) {
static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
static struct state {
/* some state */
} critical;
struct state local;
pthread_mutex_lock(&lock);
local = critical; /* make a local copy */
/* update critical */
pthread_mutex_unlock(&lock);
/* ... refer to local copy of state ... */
}
Die critical
Zustand Spuren, welche einen Teil des Problems einen bestimmten Thread lösen sollte. Kopieren nach local
stellt fest, dass der Thread für diesen Teil des Problems funktioniert. Der Status critical
wird dann aktualisiert, sodass der nächste Thread, der critical
liest, weiß, dass er an einem anderen Teil des Problems arbeitet.
Hier ist kein Geheimnis. Sie haben zwei einfache Möglichkeiten, um zu bestimmen, was der Thread macht: Erstens bestimmt das 'void * (*) (void *)' - Argument, welche Funktion der Thread startet, Two bestimmt das 'void *', was das Argument für diese Funktion ist wird sein. – EOF
Jeder Thread geht automatisch zur PartialCodec-Funktion und das Argument ist für alle Threads gleich –
Sie zeigen nicht Ihren gesamten Code, aber wir nehmen an, dass 'iTd' für jeden Thread anders ist, was bedeuten sollte, dass jeder Thread einen anderen Zeiger bekommt zu einem Element von 'pcMCData'. – jxh