|
|
Algorithm 2 Adjust thread sleep time (ATST) algorithm, which is used to dynamically change the length of sleep time of a thread |
|
|
Input: current data transmission interval transInterval, which is a double precision number time interval that the database storing sensor data transmission frequencies is queried |
| queryDBInterval, which is double precision number total time a thread has slept for sleptTime, which is a double precision number database connection string connectionString sensor identification sensorid |
|
Output: void |
|
Use: GetSqlConnection(connectionString) to get a database connection object using the given connection string |
| CloseSqlConnection(conn) to close the database connection that connection object conn holds to release database resource |
| GetTransIntervalBySensorID(conn, sensorID) to get sensor data transmission interval from database |
| GetQueryDBIntervalFromCfg() to get database query interval from external configuration file |
| ThreadSleep(timeInterval) to make a thread sleep for time timeInterval |
|
Declare: None |
| Begin: |
| 1:If (indicationInterval <= queryDBInterval) then
|
| 2:{ThreadSleep(transInterval);} |
| 3:Else
|
| 4:{ThreadSleep(queryDBInterval); |
| 5: conn = GetSqlConnection(connectionString); |
| 6: double newTransInterval = 0.0; |
| 7: If (conn! = null) then
|
| 8: {newTransInterval= GetTransIntervalBySensorID(conn, sensorid); |
| 9: CloseSqlConnection(conn);} |
| 10: End If
|
| 11: sleptTime = sleptTime + queryDBInterval; |
| 12: If (newTransInterval > sleptTime) then
|
| 13: {newTransInterval = newTransInterval- sleptTime; |
| 14: queryDBInterval = GetQueryDBIntervalFromCfg(); |
| 15: ATST(newTransInterval, queryDBInterval, sleptTime, connectionString, sensorid);} |
| 16: End If} |
| 17:End If
|
| End |
|