README
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:2k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. Copyright (c) 1993, 1994 Chris Provenzano. All rights reserved.
  2. This is a threadsafe stdio based on the BSD stdio written by Chris Torek.
  3. This product includes software developed by the Univeristy of California,
  4. Berkeley and its contributors.
  5. INCLUDE FILES AND PORTING
  6. To continue to make this package portable, some basic rules on includes
  7. files must be followed.
  8. pthread.h should be included first (if it is to be included).
  9. stdio.h should be included.
  10. INTERNAL LOCKING
  11. 1. All functions that can be called by the user must have flockfile() at the
  12. begining and a funlockfile() at the end. The routine flockfile() is a
  13. counting mutex, The thread that owns the lock can call flockfile() as 
  14. many times as it wants, but must call an equal number of funlockfile()
  15. before the lock will be released.
  16. 2. All functions starting with __ shouldn't need addtional locking.
  17. 3. Anything that writes the variable __sglue should lock __sfp_mutex,
  18.   check __sfp_state, and do a condion wait if it is set.
  19. 4. Anything that checks fp->_flag for valididity should also lock
  20. __sfp_mutex.
  21. 5. Anything that reads the variable __sglue should lock __sfp_mutex, increment
  22. __sfp_state, and then unlock the mutex. At function return it should
  23. lock the mutex again decrement __sfp_state and check if zero. If so
  24. do a cond_signal, and unlock the mutex.
  25. 6. The functions fopen, fdopen, and freopen are the only functions that
  26. will change a fp->_file
  27. 7. fdopen and fopen both allocate the next fp by locking __sfp_mutex
  28. checking fp->_flags and then setting it if free.
  29. 8. freopen tries to preserve fp->_file. It sets __sfp_mutex, then it
  30. tries to lock fp->_file and close it.
  31. 9. __sinit is done with a pthread_once routine.
  32. Things to do.
  33. Fix printf so it uses the ininf function.