I don't think it matters since we only collate, no modifying anything in mem, so it is unlikely we need a threadsafe version.

-Damien

On Aug 21, 2008, at 5:57 AM, Jan Lehnardt wrote:


On Aug 20, 2008, at 22:08, [EMAIL PROTECTED] wrote:

Author: damien
Date: Wed Aug 20 13:08:05 2008
New Revision: 687438

URL: http://svn.apache.org/viewvc?rev=687438&view=rev
Log:
Fix for possible multi-threading bottleneck in ICU driver.

Damien, you mentioned on IRC that ICU is thread safe. I'm
just doing an installation of CouchDB and all the dependencies
on FreeBSD and the FreeBSD port of ICU gives me the option
to build a non-thread-safe version of ICU. Is this something we
have to worry about? Should our build system try and detect
a not-thread-safe ICU installation to avoid nasty problems?

Cheers
Jan
--



Modified:
  incubator/couchdb/trunk/src/couchdb/couch_erl_driver.c

Modified: incubator/couchdb/trunk/src/couchdb/couch_erl_driver.c
URL: 
http://svn.apache.org/viewvc/incubator/couchdb/trunk/src/couchdb/couch_erl_driver.c?rev=687438&r1=687437&r2=687438&view=diff
=
=
=
=
=
=
=
=
= =====================================================================
--- incubator/couchdb/trunk/src/couchdb/couch_erl_driver.c (original)
+++ incubator/couchdb/trunk/src/couchdb/couch_erl_driver.c Wed Aug 20 13:08:05 2008
@@ -144,18 +144,28 @@
}

ErlDrvEntry couch_driver_entry = {
- NULL, /* F_PTR init, N/A */ - couch_drv_start, /* L_PTR start, called when port is opened */ - couch_drv_stop, /* F_PTR stop, called when port is closed */ - NULL, /* F_PTR output, called when erlang has sent */ - NULL, /* F_PTR ready_input, called when input descriptor ready */ - NULL, /* F_PTR ready_output, called when output descriptor ready */ - "couch_erl_driver", /* char *driver_name, the argument to open_port */ - NULL, /* F_PTR finish, called when unloaded */
-        NULL,                       /* Not used */
- couch_drv_control, /* F_PTR control, port_command callback */ - NULL, /* F_PTR timeout, reserved */ - NULL /* F_PTR outputv, reserved */
+        NULL,               /* F_PTR init, N/A */
+ couch_drv_start, /* L_PTR start, called when port is opened */ + couch_drv_stop, /* F_PTR stop, called when port is closed */ + NULL, /* F_PTR output, called when erlang has sent */ + NULL, /* F_PTR ready_input, called when input descriptor ready */ + NULL, /* F_PTR ready_output, called when output descriptor ready */ + "couch_erl_driver", /* char *driver_name, the argument to open_port */
+        NULL,               /* F_PTR finish, called when unloaded */
+        NULL,               /* Not used */
+ couch_drv_control, /* F_PTR control, port_command callback */
+        NULL,               /* F_PTR timeout, reserved */
+        NULL,               /* F_PTR outputv, reserved */
+        NULL,               /* F_PTR ready_async */
+        NULL,               /* F_PTR flush */
+        NULL,               /* F_PTR call */
+        NULL,               /* F_PTR event */
+        ERL_DRV_EXTENDED_MARKER,
+        ERL_DRV_EXTENDED_MAJOR_VERSION,
+        ERL_DRV_EXTENDED_MINOR_VERSION,
+        ERL_DRV_FLAG_USE_PORT_LOCKING,
+ NULL, /* Reserved -- Used by emulator internally */
+        NULL,               /* F_PTR process_exit */
};

DRIVER_INIT(couch_erl_driver) /* must match name in driver_entry */





Reply via email to