diff options
author | toyoshim@chromium.org <toyoshim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-21 07:08:39 +0000 |
---|---|---|
committer | toyoshim@chromium.org <toyoshim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-21 07:08:39 +0000 |
commit | de43b88e942f1f8eb33e962007830c63de46743b (patch) | |
tree | 6d2ff39b748db6e147377f63aa12a1662b50c486 /webkit | |
parent | 99127777d32f9b5cd46e7bbdfb5537b20fa8574e (diff) | |
download | chromium_src-de43b88e942f1f8eb33e962007830c63de46743b.zip chromium_src-de43b88e942f1f8eb33e962007830c63de46743b.tar.gz chromium_src-de43b88e942f1f8eb33e962007830c63de46743b.tar.bz2 |
LayoutTests/http/tests/websocket/tests/hixie76/simple-stress.html was flaky.
|g_io_thread| and |message_loop_| threads touch |num_pending_tasks_|.
We should define it as Atomic32 and touch it via atomic operation.
BUG=32018
TEST=LayoutTests/http/tests/websocket/tests/hixie76/simple-stress.html
Review URL: http://codereview.chromium.org/7389005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@93350 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit')
-rw-r--r-- | webkit/tools/test_shell/simple_socket_stream_bridge.cc | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/webkit/tools/test_shell/simple_socket_stream_bridge.cc b/webkit/tools/test_shell/simple_socket_stream_bridge.cc index 43ee58e..14b652b 100644 --- a/webkit/tools/test_shell/simple_socket_stream_bridge.cc +++ b/webkit/tools/test_shell/simple_socket_stream_bridge.cc @@ -6,6 +6,7 @@ #include "webkit/tools/test_shell/simple_socket_stream_bridge.h" +#include "base/atomicops.h" #include "base/memory/ref_counted.h" #include "base/message_loop.h" #include "googleurl/src/gurl.h" @@ -68,7 +69,7 @@ class WebSocketStreamHandleBridgeImpl scoped_refptr<net::SocketStreamJob> socket_; // Number of pending tasks to handle net::SocketStream::Delegate methods. - int num_pending_tasks_; + base::subtle::Atomic32 num_pending_tasks_; DISALLOW_COPY_AND_ASSIGN(WebSocketStreamHandleBridgeImpl); }; @@ -118,7 +119,7 @@ void WebSocketStreamHandleBridgeImpl::Close() { void WebSocketStreamHandleBridgeImpl::OnConnected( net::SocketStream* socket, int max_pending_send_allowed) { - ++num_pending_tasks_; + base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, 1); message_loop_->PostTask( FROM_HERE, NewRunnableMethod(this, &WebSocketStreamHandleBridgeImpl::DoOnConnected, @@ -127,7 +128,7 @@ void WebSocketStreamHandleBridgeImpl::OnConnected( void WebSocketStreamHandleBridgeImpl::OnSentData( net::SocketStream* socket, int amount_sent) { - ++num_pending_tasks_; + base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, 1); message_loop_->PostTask( FROM_HERE, NewRunnableMethod(this, &WebSocketStreamHandleBridgeImpl::DoOnSentData, @@ -136,7 +137,7 @@ void WebSocketStreamHandleBridgeImpl::OnSentData( void WebSocketStreamHandleBridgeImpl::OnReceivedData( net::SocketStream* socket, const char* data, int len) { - ++num_pending_tasks_; + base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, 1); message_loop_->PostTask( FROM_HERE, NewRunnableMethod(this, @@ -145,7 +146,7 @@ void WebSocketStreamHandleBridgeImpl::OnReceivedData( } void WebSocketStreamHandleBridgeImpl::OnClose(net::SocketStream* socket) { - ++num_pending_tasks_; + base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, 1); // Release socket_ on IO thread. socket_ = NULL; socket_id_ = kNoSocketId; @@ -182,14 +183,14 @@ void WebSocketStreamHandleBridgeImpl::DoClose() { void WebSocketStreamHandleBridgeImpl::DoOnConnected( int max_pending_send_allowed) { DCHECK(MessageLoop::current() == message_loop_); - --num_pending_tasks_; + base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, -1); if (delegate_) delegate_->DidOpenStream(handle_, max_pending_send_allowed); } void WebSocketStreamHandleBridgeImpl::DoOnSentData(int amount_sent) { DCHECK(MessageLoop::current() == message_loop_); - --num_pending_tasks_; + base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, -1); if (delegate_) delegate_->DidSendData(handle_, amount_sent); } @@ -197,7 +198,7 @@ void WebSocketStreamHandleBridgeImpl::DoOnSentData(int amount_sent) { void WebSocketStreamHandleBridgeImpl::DoOnReceivedData( std::vector<char>* data) { DCHECK(MessageLoop::current() == message_loop_); - --num_pending_tasks_; + base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, -1); scoped_ptr<std::vector<char> > scoped_data(data); if (delegate_) delegate_->DidReceiveData(handle_, &(data->at(0)), data->size()); @@ -205,7 +206,7 @@ void WebSocketStreamHandleBridgeImpl::DoOnReceivedData( void WebSocketStreamHandleBridgeImpl::DoOnClose() { DCHECK(MessageLoop::current() == message_loop_); - --num_pending_tasks_; + base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, -1); // Don't handle OnClose if there are pending tasks. DCHECK_EQ(num_pending_tasks_, 0); DCHECK(!socket_); |