ize ▁such ▁array , ▁the ▁compiler ▁needs ▁to ▁have ▁some ▁advanced ▁symbol ic ▁manip ulation ▁functions . ▁ ▁Ex amples ▁ ▁Example ▁ 1 ▁ ▁There ▁are ▁several ▁situations ▁in ▁which ▁it ▁is ▁appropriate ▁to ▁priv at ize ▁a ▁variable . ▁ ▁The ▁first ▁case ▁is ▁when ▁each ▁thread ▁will ▁write ▁to ▁the ▁variable ▁before ▁reading ▁from ▁it . ▁ ▁In ▁this ▁case , ▁it ▁does ▁not ▁matter ▁what ▁the ▁other ▁threads ▁are ▁doing ▁because ▁the ▁current ▁thread ▁always ▁writes ▁to ▁the ▁variable ▁before ▁reading ▁( using ) ▁it . ▁ ▁See ▁the ▁simple ▁example ▁below ▁in ▁which ▁the ▁variable ▁" x " ▁is ▁used ▁as ▁a ▁" temp " ▁variable ▁to ▁help ▁sw aps ▁ 3 ▁different ▁pair ▁of ▁variables . ▁ ▁Because ▁variable ▁x ▁is ▁always ▁written ▁to ▁before ▁being ▁used , ▁variable ▁x ▁can ▁be ▁priv at ized . ▁ ▁// Sequ ential ▁Code : ▁// Sw ap ▁Function ▁// Ass ume ▁the ▁variables ▁have ▁already ▁been ▁initialized ▁x ▁= ▁a ; ▁a ▁= ▁b ; ▁b ▁= ▁x ; ▁ ▁x ▁= ▁c ; ▁c ▁= ▁d ; ▁d ▁= ▁x ; ▁ ▁x ▁= ▁e ; ▁e ▁= ▁f ; ▁b ▁= ▁x ; ▁The ▁block ▁above ▁is ▁the ▁sequ ential ▁code . ▁ ▁Notice ▁that ▁without ▁priv at izing ▁the ▁variable ▁" x ", ▁the ▁code ▁could ▁not ▁be ▁parallel ized . ▁ ▁The ▁code ▁below ▁shows ▁what ▁is ▁possible ▁by ▁parallel izing ▁" x ". ▁The ▁code ▁can ▁be ▁split ▁up ▁and ▁run ▁on ▁ 3