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

📄 mutexscript.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: mutexscript.tcl,v 11.16 2002/04/29 14:58:16 sandstro Exp $## Random mutex tester.# Usage: mutexscript dir numiters mlocks sleepint degree# dir: dir in which all the mutexes live.# numiters: Total number of iterations.# nmutex: Total number of mutexes.# sleepint: Maximum sleep interval.# degree: Maximum number of locks to acquire at oncesource ./include.tclsource $test_path/test.tclsource $test_path/testutils.tclset usage "mutexscript dir numiters nmutex sleepint degree"# Verify usageif { $argc != 5 } {	puts stderr "FAIL:[timestamp] Usage: $usage"	exit}# Initialize argumentsset dir [lindex $argv 0]set numiters [ lindex $argv 1 ]set nmutex [ lindex $argv 2 ]set sleepint [ lindex $argv 3 ]set degree [ lindex $argv 4 ]set locker [pid]set mypid [sanitized_pid]# Initialize seedglobal rand_initberkdb srand $rand_initputs -nonewline "Mutexscript: Beginning execution for $locker:"puts " $numiters $nmutex $sleepint $degree"flush stdout# Open the environment and the mutexset e [berkdb_env -create -mode 0644 -lock -home $dir]error_check_good evn_open [is_valid_env $e] TRUEset mutex [$e mutex 0644 $nmutex]error_check_good mutex_init [is_valid_mutex $mutex $e] TRUE# Sleep for awhile to make sure that everyone has gotten intclsleep 5for { set iter 0 } { $iter < $numiters } { incr iter } {	set nlocks [berkdb random_int 1 $degree]	# We will always lock objects in ascending order to avoid	# deadlocks.	set lastobj 1	set mlist {}	for { set lnum 0 } { $lnum < $nlocks } { incr lnum } {		# Pick lock parameters		set obj [berkdb random_int $lastobj [expr $nmutex - 1]]		set lastobj [expr $obj + 1]		puts "[timestamp] $locker $lnum: $obj"		# Do get, set its val to own pid, and then add to list		error_check_good mutex_get:$obj [$mutex get $obj] 0		error_check_good mutex_setval:$obj [$mutex setval $obj $mypid] 0		lappend mlist $obj		if {$lastobj >= $nmutex} {			break		}	}	# Sleep for 10 to (100*$sleepint) ms.	after [berkdb random_int 10 [expr $sleepint * 100]]	# Now release locks	foreach i $mlist {		error_check_good mutex_getval:$i [$mutex getval $i] $mypid		error_check_good mutex_setval:$i \		    [$mutex setval $i [expr 0 - $mypid]] 0		error_check_good mutex_release:$i [$mutex release $i] 0	}	puts "[timestamp] $locker released mutexes"	flush stdout}puts "[timestamp] $locker Complete"flush stdout

⌨️ 快捷键说明

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