Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  log_tls_dtors.rs

  Sprache: Rust
 

#[macro_use]
extern crate log;
extern crate env_logger;

use std::env;
use std::process;
use std::str;
use std::thread;

struct DropMe;

impl Drop for DropMe {
    fn drop(&mut self) {
        debug!("Dropping now");
    }
}

fn run() {
    // Use multiple thread local values to increase the chance that our TLS
    // value will get destroyed after the FORMATTER key in the library
    thread_local! {
        static DROP_ME_0: DropMe = DropMe;
        static DROP_ME_1: DropMe = DropMe;
        static DROP_ME_2: DropMe = DropMe;
        static DROP_ME_3: DropMe = DropMe;
        static DROP_ME_4: DropMe = DropMe;
        static DROP_ME_5: DropMe = DropMe;
        static DROP_ME_6: DropMe = DropMe;
        static DROP_ME_7: DropMe = DropMe;
        static DROP_ME_8: DropMe = DropMe;
        static DROP_ME_9: DropMe = DropMe;
    }
    DROP_ME_0.with(|_| {});
    DROP_ME_1.with(|_| {});
    DROP_ME_2.with(|_| {});
    DROP_ME_3.with(|_| {});
    DROP_ME_4.with(|_| {});
    DROP_ME_5.with(|_| {});
    DROP_ME_6.with(|_| {});
    DROP_ME_7.with(|_| {});
    DROP_ME_8.with(|_| {});
    DROP_ME_9.with(|_| {});
}

fn main() {
    env_logger::init();
    if env::var("YOU_ARE_TESTING_NOW").is_ok() {
        // Run on a separate thread because TLS values on the main thread
        // won't have their destructors run if pthread is used.
        // https://doc.rust-lang.org/std/thread/struct.LocalKey.html#platform-specific-behavior
        thread::spawn(run).join().unwrap();
    } else {
        let exe = env::current_exe().unwrap();
        let out = process::Command::new(exe)
            .env("YOU_ARE_TESTING_NOW""1")
            .env("RUST_LOG""debug")
            .output()
            .unwrap_or_else(|e| panic!("Unable to start child process: {}", e));
        if !out.status.success() {
            println!("test failed: {}", out.status);
            println!("--- stdout\n{}", str::from_utf8(&out.stdout).unwrap());
            println!("--- stderr\n{}", str::from_utf8(&out.stderr).unwrap());
            process::exit(1);
        }
    }
}

Messung V0.5 in Prozent
C=93 H=100 G=96

¤ Dauer der Verarbeitung: 0.1 Sekunden  (vorverarbeitet am  2026-06-25) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik