Manuel de suivi dynamique Solaris

Validation d'une spéculation

Vous validez des spéculations à l'aide de la fonction commit. () Lorsqu'un tampon spéculatif est validé, les données qu'il contient sont copiées dans le tampon principal. Si le tampon spéculatif spécifié comporte plus de données que l'espace disponible dans le tampon principal ne peut en recevoir, aucune donnée n'est copiée et le compteur de pose du tampon est incrémenté. Si le tampon a fait l'objet d'un suivi spéculatif sur plus d'une CPU, les données spéculatives sur la CPU de validation sont copiées immédiatement tandis que les données spéculatives sur les autres CPU sont parfois copiées après la fonction commit(). Par conséquent, un certain laps de temps peut s'écouler entre le moment où une fonction commit() est exécutée sur une CPU et celui où les données sont copiées des tampons spéculatifs sur les tampons principaux sur toutes les CPU. Ce laps de temps ne peut pas excéder la durée dictée par le taux de nettoyage. Pour plus d'informations, reportez-vous à la section Options de spéculation et réglage.

Aucun tampon spéculatif de validation n'est disponible pour les appels speculation() ultérieurs tant que chaque tampon spéculatif par CPU n'a pas été complètement copié dans le tampon principal par CPU correspondant. De même, les appels ultérieurs de la fonction speculate() sur le tampon de validation sont silencieusement supprimés et les appels ultérieurs de la fonction commit() ou discard() échouent silencieusement. Enfin, une clause contenant une fonction commit() ne peut pas contenir d'action d'enregistrement de données. Par contre, une clause peut contenir plusieurs appels commit() pour valider des tampons disjoints.