⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dead004.tcl

📁 这是linux下运行的mysql软件包,可用于linux 下安装 php + mysql + apach 的网络配置
💻 TCL
字号:
# See the file LICENSE for redistribution information.## Copyright (c) 1996-2002#	Sleepycat Software.  All rights reserved.## $Id: dead004.tcl,v 11.11 2002/09/05 17:23:05 sandstro Exp $## Deadlock Test 4.# This test is designed to make sure that we handle youngest and oldest# deadlock detection even when the youngest and oldest transactions in the# system are not involved in the deadlock (that is, we want to abort the# youngest/oldest which is actually involved in the deadlock, not simply# the youngest/oldest in the system).# Since this is used for transaction systems, the locker ID is what we# use to identify age (smaller number is older).## The set up is that we have a total of 6 processes.  The oldest (locker 0)# and the youngest (locker 5) simply acquire a lock, hold it for a long time# and then release it.  The rest form a ring, obtaining lock N and requesting# a lock on (N+1) mod 4.  The deadlock detector ought to pick locker 1 or 4# to abort  and not 0 or 5.proc dead004 { } {	source ./include.tcl	global lock_curid	global lock_maxid	foreach a { o y } {		puts "Dead004: Deadlock detector test -a $a"		env_cleanup $testdir		# Create the environment.		puts "\tDead004.a: creating environment"		set env [berkdb_env -create -mode 0644 -lock -home $testdir]		error_check_good lock_env:open [is_valid_env $env] TRUE		set dpid [exec $util_path/db_deadlock -v -t 5 -a $a \		    -h $testdir >& $testdir/dd.out &]		set procs 6		foreach n $procs {			sentinel_init			set pidlist ""			set ret [$env lock_id_set $lock_curid $lock_maxid]			error_check_good lock_id_set $ret 0			# Fire off the tests			puts "\tDead004: $n procs"			for { set i 0 } { $i < $n } { incr i } {				set locker [$env lock_id]				puts "$tclsh_path $test_path/wrap.tcl \				    $testdir/dead004.log.$i \				    ddoyscript.tcl $testdir $locker $n $a $i"				set p [exec $tclsh_path \					$test_path/wrap.tcl \					ddoyscript.tcl $testdir/dead004.log.$i \					$testdir $locker $n $a $i &]				lappend pidlist $p			}			watch_procs $pidlist 5		}		# Now check output		set dead 0		set clean 0		set other 0		for { set i 0 } { $i < $n } { incr i } {			set did [open $testdir/dead004.log.$i]			while { [gets $did val] != -1 } {				switch $val {					DEADLOCK { incr dead }					1 { incr clean }					default { incr other }				}			}			close $did		}		tclkill $dpid		puts "dead check..."		dead_check oldyoung $n 0 $dead $clean $other		# Now verify that neither the oldest nor the		# youngest were the deadlock.		set did [open $testdir/dead004.log.0]		error_check_bad file:young [gets $did val] -1		error_check_good read:young $val 1		close $did		set did [open $testdir/dead004.log.[expr $procs - 1]]		error_check_bad file:old [gets $did val] -1		error_check_good read:old $val 1		close $did		# Windows needs files closed before deleting files,		# so pause a little		tclsleep 2		fileremove -f $testdir/dd.out		# Remove log files		for { set i 0 } { $i < $n } { incr i } {			fileremove -f $testdir/dead004.log.$i		}		error_check_good lock_env:close [$env close] 0	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -