Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | More comments on the unix locking code. Ticket #1672. (CVS 3075) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
4b6f5688843ebe39f6bd3e863666a44d |
User & Date: | drh 2006-02-10 13:11:32.000 |
Context
2006-02-10
| ||
13:14 | Add documentation for new APIs. (CVS 3076) (check-in: 84c2a5c4d7 user: danielk1977 tags: trunk) | |
13:11 | More comments on the unix locking code. Ticket #1672. (CVS 3075) (check-in: 4b6f568884 user: drh tags: trunk) | |
12:48 | Add trivial tests to increase coverage of sqlite3_table_column_metadata(). (CVS 3074) (check-in: 424ce5ecd0 user: danielk1977 tags: trunk) | |
Changes
Changes to src/os_unix.c.
︙ | ︙ | |||
1671 1672 1673 1674 1675 1676 1677 | /* ** Static variables used for thread synchronization. ** ** inMutex the nesting depth of the recursive mutex. The thread ** holding mutexMain can read this variable at any time. ** But is must hold mutexAux to change this variable. Other | | > | > > > > > > > > > > > | | 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 | /* ** Static variables used for thread synchronization. ** ** inMutex the nesting depth of the recursive mutex. The thread ** holding mutexMain can read this variable at any time. ** But is must hold mutexAux to change this variable. Other ** threads must hold mutexAux to read the variable and can ** never write. ** ** mutexOwner The thread id of the thread holding mutexMain. Same ** access rules as for inMutex. ** ** mutexOwnerValid True if the value in mutexOwner is valid. The same ** access rules apply as for inMutex. ** ** mutexMain The main mutex. Hold this mutex in order to get exclusive ** access to SQLite data structures. ** ** mutexAux An auxiliary mutex needed to access variables defined above. ** ** Mutexes are always acquired in this order: mutexMain mutexAux. It ** is not necessary to acquire mutexMain in order to get mutexAux - just ** do not attempt to acquire them in the reverse order: mutexAux mutexMain. ** Either get the mutexes with mutexMain first or get mutexAux only. ** ** When running on a platform where the three variables inMutex, mutexOwner, ** and mutexOwnerValid can be set atomically, the mutexAux is not required. ** On many systems, all three are 32-bit integers and writing to a 32-bit ** integer is atomic. I think. But there are no guarantees. So it seems ** safer to protect them using mutexAux. */ static int inMutex = 0; #ifdef SQLITE_UNIX_THREADS static pthread_t mutexOwner; /* Thread holding mutexMain */ static int mutexOwnerValid = 0; /* True if mutexOwner is valid */ static pthread_mutex_t mutexMain = PTHREAD_MUTEX_INITIALIZER; /* The mutex */ static pthread_mutex_t mutexAux = PTHREAD_MUTEX_INITIALIZER; /* Aux mutex */ #endif /* ** The following pair of routine implement mutual exclusion for |
︙ | ︙ |